MrShi
2025-09-08 d3ff748bc6b3452179f50d38ef251b4fee7ce266
改bug
已添加14个文件
已修改4个文件
1374 ■■■■■ 文件已修改
frontWuhu/.env.development 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/package-lock.json 160 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/api/business/applicationInfo.js 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/api/business/demandRecord.js 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/api/business/labels.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/api/business/serverProvider.js 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/assets/images/bg_fuwushang.png 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/assets/images/ic_clear@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/assets/images/ic_fuwushang@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/components/business/OperaApplicationInfoWindow.vue 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/components/business/OperaDemandRecordWindow.vue 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/components/business/OperaDetailsAWindow.vue 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/components/business/OperaServerProviderWindow.vue 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/components/business/ProjectItem.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/views/business/applicationInfo.vue 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/views/business/demandRecord.vue 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/views/business/serverProvider.vue 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/src/views/business/serviceProviderResources.vue 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontWuhu/.env.development
@@ -7,8 +7,8 @@
# æ±Ÿèæœ¬åœ°
# VVUE_APP_API_BASE_URL='http://192.168.0.102:10031'
# åˆ˜ç£Šç£Šæœ¬åœ°
# VUE_APP_API_BASE_URL='http://192.168.0.18:10010'
# ä»»åº·æœ¬åœ°
VUE_APP_API_BASE_URL='http://192.168.1.54:10031'
#焦松本地
# VUE_APP_API_BASE_URL='http://192.168.0.36:10011'
@@ -16,7 +16,7 @@
# æµ‹è¯•服务 http://106.14.20.42/test_hfznzz
VUE_APP_API_BASE_URL='http://106.14.20.42/test_hfznzz'
# VUE_APP_API_BASE_URL='http://106.14.20.42/test_hfznzz'
# VUE_APP_API_BASE_URL='http://106.14.20.42/hfznzzzd/'
#
frontWuhu/package-lock.json
@@ -1869,6 +1869,63 @@
          "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
          "dev": true
        },
        "ansi-styles": {
          "version": "4.3.0",
          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
          "dev": true,
          "optional": true,
          "requires": {
            "color-convert": "^2.0.1"
          }
        },
        "chalk": {
          "version": "4.1.2",
          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
          "dev": true,
          "optional": true,
          "requires": {
            "ansi-styles": "^4.1.0",
            "supports-color": "^7.1.0"
          }
        },
        "color-convert": {
          "version": "2.0.1",
          "resolved": "https://registry.npmmirror.com/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.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
          "dev": true,
          "optional": true
        },
        "has-flag": {
          "version": "4.0.0",
          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
          "dev": true,
          "optional": true
        },
        "loader-utils": {
          "version": "2.0.4",
          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
          "dev": true,
          "optional": true,
          "requires": {
            "big.js": "^5.2.2",
            "emojis-list": "^3.0.0",
            "json5": "^2.1.2"
          }
        },
        "ssri": {
          "version": "8.0.1",
          "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
@@ -1876,6 +1933,28 @@
          "dev": true,
          "requires": {
            "minipass": "^3.1.1"
          }
        },
        "supports-color": {
          "version": "7.2.0",
          "resolved": "https://registry.npmmirror.com/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"
          }
        },
        "vue-loader-v16": {
          "version": "npm:vue-loader@16.8.3",
          "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
          "dev": true,
          "optional": true,
          "requires": {
            "chalk": "^4.1.0",
            "hash-sum": "^2.0.0",
            "loader-utils": "^2.0.0"
          }
        }
      }
@@ -13448,87 +13527,6 @@
          "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz",
          "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
          "dev": true
        }
      }
    },
    "vue-loader-v16": {
      "version": "npm:vue-loader@16.8.3",
      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
      "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.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
          "dev": true,
          "optional": true,
          "requires": {
            "color-convert": "^2.0.1"
          }
        },
        "chalk": {
          "version": "4.1.2",
          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
          "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
        },
        "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
        },
        "loader-utils": {
          "version": "2.0.4",
          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
          "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.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"
          }
        }
      }
    },
frontWuhu/src/api/business/applicationInfo.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/business/applicationInfo/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/business/applicationInfo/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/business/applicationInfo/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/business/applicationInfo/updateById', data)
}
// ä¿®æ”¹çŠ¶æ€
export function updateStatus (data) {
  return request.post('/business/applicationInfo/updateStatus', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/applicationInfo/delete/${id}`)
}
frontWuhu/src/api/business/demandRecord.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/business/demandRecord/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/business/demandRecord/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/business/demandRecord/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/business/demandRecord/updateById', data)
}
frontWuhu/src/api/business/labels.js
@@ -17,6 +17,11 @@
  return request.post('/business/labels/updateById', data)
}
// åˆ—表查询
export function list (data) {
  return request.post('/business/labels/list', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/labels/delete/${id}`)
frontWuhu/src/api/business/serverProvider.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/business/serverProvider/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/business/serverProvider/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/business/serverProvider/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/business/serverProvider/updateById', data)
}
// ä¿®æ”¹çŠ¶æ€
export function updateStatus (data) {
  return request.post('/business/serverProvider/updateStatus', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/serverProvider/delete/${id}`)
}
frontWuhu/src/assets/images/bg_fuwushang.png
frontWuhu/src/assets/images/ic_clear@2x.png
frontWuhu/src/assets/images/ic_fuwushang@2x.png
frontWuhu/src/components/business/OperaApplicationInfoWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,121 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="应用名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入应用名称" v-trim/>
      </el-form-item>
      <el-form-item label="应用LOGO" prop="logo">
        <UploadAvatarImage :uploadData="uploadData" :file="file" @uploadSuccess="getFiles" />
      </el-form-item>
      <el-form-item label="服务商" prop="serverId">
        <el-select v-model="form.serverId" placeholder="请选择">
          <el-option
            v-for="item in server"
            :key="item.id"
            :label="item.name"
            :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="应用标签" prop="lables">
        <el-input v-model="form.lables" placeholder="请输入应用标签(多个以英文,分割)" v-trim/>
      </el-form-item>
      <el-form-item label="应用简介" prop="introduction">
        <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/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadAvatarImage from '@/components/common/UploadAvatarImage'
import { fetchList } from '@/api/business/serverProvider'
export default {
  name: 'OperaApplicationInfoWindow',
  extends: BaseOpera,
  components: { GlobalWindow, UploadAvatarImage },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        serverId: '',
        name: '',
        logo: '',
        lables: '',
        introduction: '',
        details: ''
      },
      // éªŒè¯è§„则
      rules: {
        name: [
          { required: true, message: '请输入', trigger: 'blur' }
        ],
        logo: [
          { required: true, message: '请上传', trigger: 'blur' }
        ],
        serverId: [
          { required: true, message: '请选择', trigger: 'blur' }
        ],
      },
      server: [],
      uploadData: {
        folder: 'znzz/logo_file',
        type: 'image'
      },
      file: {
        imgurl: '',
        imgurlfull: ''
      },
    }
  },
  created () {
    this.config({
      api: '/business/applicationInfo',
      'field.id': 'id'
    })
  },
  methods: {
    open (title, target) {
      this.title = title
      this.getFetchList()
      this.visible = true
      // æ–°å»º
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
        })
        return
      }
      // ç¼–辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
        this.file.imgurl = target.logo
        this.file.imgurlfull = target.fullLog
      })
    },
    getFiles(e) {
      this.file.imgurl = e.imgurl
      this.file.imgurlfull = e.imgurlfull
      this.form.logo = e.imgurl
    },
    async getFetchList() {
      let res = await fetchList({ capacity: 9999, page: 1, model: { status: 0 } })
      this.server = res.records
    }
  }
}
</script>
frontWuhu/src/components/business/OperaDemandRecordWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="应用名称" prop="applicationId">
        <el-select v-model="form.applicationId" placeholder="请选择">
          <el-option
            v-for="item in application"
            :key="item.id"
            :label="item.name"
            :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="需求企业" prop="companyId">
        <el-select v-model="form.companyId" placeholder="请选择">
          <el-option
            v-for="item in company"
            :key="item.id"
            :label="item.name"
            :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="联系人姓名" prop="linkName">
        <el-input v-model="form.linkName" placeholder="请输入联系人姓名" v-trim/>
      </el-form-item>
      <el-form-item label="联系人电话" prop="linkPhone">
        <el-input v-model="form.linkPhone" maxlength="11" placeholder="请输入联系人电话" v-trim/>
      </el-form-item>
      <el-form-item label="需求说明" prop="details">
        <el-input type="textarea" :autosize="{ minRows: 12, maxRows: 6 }" v-model="form.details" placeholder="请输入需求说明" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaDemandRecordWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        status: '',
        remark: '',
        applicationId: '',
        companyId: '',
        linkName: '',
        linkPhone: '',
        details: ''
      },
      // éªŒè¯è§„则
      rules: {
      },
      application: [],
      company: []
    }
  },
  created () {
    this.config({
      api: '/business/demandRecord',
      'field.id': 'id'
    })
  }
}
</script>
frontWuhu/src/components/business/OperaDetailsAWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <div class="com">
      <div class="com_image">
        <img src="../../assets/images/zhuce_ic_qiye@2x.png" />
      </div>
      <div class="com_info">
        <div class="com_info_title">大唐融合物联科技无锡有限公司</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>
        </div>
      </div>
    </div>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaDemandRecordWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      form: {}
    }
  },
  created () {
    this.config({
      api: '/business/demandRecord',
      'field.id': 'id'
    })
  }
}
</script>
<style lang="scss" scoped>
  .com {
    width: 100%;
    display: flex;
    .com_image {
      width: 140px;
      height: 140px;
      flex-shrink: 0;
      background: #F4F7FC;
      margin-right: 30px;
    }
    .com_info {
      flex: 1;
      display: flex;
      flex-direction: column;
      .com_info_title {
        font-weight: 600;
        font-size: 26px;
        color: #222222;
      }
      .com_info_list {
        display: flex;
        flex-direction: column;
        .com_info_list_item {
          width: 100%;
          display: flex;
          align-items: center;
          .com_info_list_item_label {
          }
          .com_info_list_item_val {
          }
        }
      }
    }
  }
</style>
frontWuhu/src/components/business/OperaServerProviderWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="服务商名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入服务商名称" v-trim/>
      </el-form-item>
      <el-form-item label="LOGO图片" prop="logo">
        <UploadAvatarImage :uploadData="uploadData" :file="file" @uploadSuccess="getFiles" />
      </el-form-item>
      <el-form-item label="所属行业" prop="industryId">
        <el-select v-model="form.industryId" placeholder="请选择">
          <el-option
            v-for="item in industry"
            :key="item.id"
            :label="item.name"
            :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="服务星级" prop="starLevel">
        <el-select v-model="form.starLevel" placeholder="请选择">
          <el-option
            v-for="item in 5"
            :key="item"
            :label="item + '级'"
            :value="item">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="联系人姓名" prop="linkName">
        <el-input v-model="form.linkName" placeholder="请输入联系人姓名" v-trim/>
      </el-form-item>
      <el-form-item label="联系人电话" prop="linkPhone">
        <el-input v-model="form.linkPhone" maxlength="11" placeholder="请输入联系人电话" v-trim/>
      </el-form-item>
      <el-form-item label="简介" prop="introduction">
        <el-input type="textarea" :autosize="{ minRows: 12, maxRows: 6 }" v-model="form.introduction" placeholder="请输入简介" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadAvatarImage from '@/components/common/UploadAvatarImage'
import { list } from '@/api/business/labels'
export default {
  name: 'OperaServerProviderWindow',
  extends: BaseOpera,
  components: { GlobalWindow, UploadAvatarImage },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        name: '',
        logo: '',
        industryId: '',
        starLevel: '',
        linkName: '',
        linkPhone: '',
        introduction: ''
      },
      file: {
        imgurl: '',
        imgurlfull: ''
      },
      // éªŒè¯è§„则
      rules: {
        name: [
          { required: true, message: '请输入', trigger: 'blur' }
        ],
        logo: [
          { required: true, message: '请上传', trigger: 'blur' }
        ]
      },
      uploadData: {
        folder: 'znzz/logo_file',
        type: 'image'
      },
      industry: []
    }
  },
  created () {
    this.config({
      api: '/business/serverProvider',
      'field.id': 'id'
    })
  },
  methods: {
    getFiles(e) {
      this.file.imgurl = e.imgurl
      this.file.imgurlfull = e.imgurlfull
      this.form.logo = e.imgurl
    },
    open (title, target) {
      this.title = title
      this.getAll()
      this.visible = true
      // æ–°å»º
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
        })
        return
      }
      // ç¼–辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
        this.file.imgurlfull = target.fullLog
        this.file.imgurl = target.logo
      })
    },
    async getAll() {
      this.industry = await list({ type: 1, isdeleted: 0 })
    }
  }
}
</script>
frontWuhu/src/components/business/ProjectItem.vue
@@ -86,13 +86,9 @@
  methods: {
    // è·³è½¬å¤§å±
    jumpDP() {
<<<<<<< .mine
      window.open(`http://106.14.20.42/screen/#/zhfw/declaration?projectId=${this.id}`)
||||||| .r53257
      window.open(`${process.env.VUE_APP_SCREENURL1}?projectId=${this.id}`)
=======
      // window.open(`http://106.14.20.42/screen/#/zhfw/declaration?projectId=${this.id}`)
      // window.open(`${process.env.VUE_APP_SCREENURL1}?projectId=${this.id}`)
      window.open(`${process.env.VUE_APP_SCREENURL1}?projectId=${this.id}&title=${this.projectName}`)
>>>>>>> .r53404
    },
    // å±•示企业&
    showCompany() {
frontWuhu/src/views/business/applicationInfo.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,127 @@
<template>
  <TableLayout :permissions="['business:applicationinfo:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <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>
      <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>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:applicationinfo:create']">
        <li><el-button type="primary" @click="$refs.operaApplicationInfoWindow.open('新建应用管理')" icon="el-icon-plus" v-permissions="['business:applicationinfo:create']">新建</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
      >
        <el-table-column prop="name" label="名称" min-width="100px"></el-table-column>
        <el-table-column label="LOGO" min-width="120px">
          <template slot-scope="{row}">
            <el-image
              v-if="row.fullLog"
              style="width: 100px; height: 100px"
              :src="row.fullLog"
              :preview-src-list="[row.fullLog]">
            </el-image>
          </template>
        </el-table-column>
        <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 label="状态" min-width="100px">
          <template slot-scope="{row}">
            <el-switch
              v-model="row.status"
              @change="changeStatus($event, row.id)"
              active-color="#13ce66"
              inactive-color="#ff4949"
              :active-value="0"
              :inactive-value="1">
            </el-switch>
          </template>
        </el-table-column>
        <el-table-column
          v-if="containPermissions(['business:applicationinfo:update', 'business:applicationinfo:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaApplicationInfoWindow.open('编辑应用管理', row)" icon="el-icon-edit" v-permissions="['business:applicationinfo:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:applicationinfo:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaApplicationInfoWindow ref="operaApplicationInfoWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaApplicationInfoWindow from '@/components/business/OperaApplicationInfoWindow'
import { updateStatus } from '@/api/business/applicationInfo'
export default {
  name: 'ApplicationInfo',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaApplicationInfoWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        status: '',
        remark: '',
        serverId: '',
        name: '',
        logo: '',
        lables: '',
        introduction: '',
        details: ''
      }
    }
  },
  created () {
    this.config({
      module: '应用管理',
      api: '/business/applicationInfo',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
    changeStatus(status, id) {
      updateStatus({ id, status })
        .then(res => {
          this.search()
        })
    }
  }
}
</script>
frontWuhu/src/views/business/demandRecord.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
<template>
  <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>
      <el-form-item label="需求提出者" prop="linkName">
        <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-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:demandrecord:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
<!--      <ul class="toolbar" v-permissions="['business:demandrecord:create']">-->
<!--        <li><el-button type="primary" @click="$refs.operaDemandRecordWindow.open('新建需求记录')" icon="el-icon-plus" v-permissions="['business:demandrecord:create']">新建</el-button></li>-->
<!--      </ul>-->
      <el-table
        v-loading="isWorking.search"
        :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="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"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaDemandRecordWindow ref="operaDemandRecordWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaDemandRecordWindow from '@/components/business/OperaDemandRecordWindow'
export default {
  name: 'DemandRecord',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaDemandRecordWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        status: '',
        remark: '',
        applicationId: '',
        companyId: '',
        linkName: '',
        linkPhone: '',
        details: ''
      }
    }
  },
  created () {
    this.config({
      module: '需求记录',
      api: '/business/demandRecord',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
frontWuhu/src/views/business/serverProvider.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
<template>
  <TableLayout :permissions="['business:serverprovider:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <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="industryId">
        <el-select v-model="searchForm.industryId" placeholder="请选择">
          <el-option
            v-for="item in industry"
            :key="item.id"
            :label="item.name"
            :value="item.id">
          </el-option>
        </el-select>
      </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 @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:serverprovider:create']">
        <li><el-button type="primary" @click="$refs.operaServerProviderWindow.open('新建服务商信息')" icon="el-icon-plus" v-permissions="['business:serverprovider:create']">新建</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
      >
        <el-table-column prop="name" label="服务商名称" min-width="100px"></el-table-column>
        <el-table-column label="LOGO" min-width="120px">
          <template slot-scope="{row}">
            <el-image
              v-if="row.fullLog"
              style="width: 100px; height: 100px"
              :src="row.fullLog"
              :preview-src-list="[row.fullLog]">
            </el-image>
          </template>
        </el-table-column>
        <el-table-column prop="industryName" label="所属行业" min-width="100px"></el-table-column>
        <el-table-column label="服务星级" min-width="100px">
          <template slot-scope="{row}">
            {{row.starLevel}}级
          </template>
        </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="introduction" label="简介" min-width="100px"></el-table-column>
        <el-table-column label="状态" min-width="100px">
          <template slot-scope="{row}">
            <el-switch
              v-model="row.status"
              @change="changeStatus($event, row.id)"
              active-color="#13ce66"
              inactive-color="#ff4949"
              :active-value="0"
              :inactive-value="1">
            </el-switch>
          </template>
        </el-table-column>
        <el-table-column
          v-if="containPermissions(['business:serverprovider:update', 'business:serverprovider:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaServerProviderWindow.open('编辑服务商信息', row)" icon="el-icon-edit" v-permissions="['business:serverprovider:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:serverprovider:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaServerProviderWindow ref="operaServerProviderWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaServerProviderWindow from '@/components/business/OperaServerProviderWindow'
import { list } from '@/api/business/labels'
import { updateStatus } from '@/api/business/serverProvider'
export default {
  name: 'ServerProvider',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaServerProviderWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        name: '',
        industryId: ''
      },
      industry: []
    }
  },
  created () {
    this.config({
      module: '服务商信息',
      api: '/business/serverProvider',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
    this.getAll()
  },
  methods: {
    async getAll() {
      this.industry = await list({ type: 1, isdeleted: 0 })
    },
    changeStatus(status, id) {
      updateStatus({ id, status })
        .then(res => {
          this.search()
        })
    }
  }
}
</script>
frontWuhu/src/views/business/serviceProviderResources.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,323 @@
<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="name" placeholder="输入服务商名称搜索">
                        <img src="../../assets/images/ic_clear@2x.png" v-if="name" @click="clearText" />
                    </div>
                    <div class="box_head_search_btn">查询</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>
                </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>
                <div class="cate_dwon">
                    <span>展开</span>
                    <i class="el-icon-arrow-down"></i>
                </div>
            </div>
            <div class="list">
                <div class="list_item" v-for="(item, index) in 6" :key="index" @click="$refs.operaDetailsAWindow.open('服务商详情')">
                    <div class="list_item_image">
                        <img src="../../assets/images/zhuce_ic_qiye@2x.png" alt="" />
                    </div>
                    <div class="list_item_title">安徽豆米科技有限公司</div>
                    <div class="list_item_info">安徽豆米科技有限公司以软件开发、人工智能应用开发为核心...</div>
                    <div class="list_item_divide">
                        <el-rate
                            v-model="value"
                            disabled
                            text-color="#ff9900">
                        </el-rate>
                    </div>
                </div>
                <div class="list_zw"></div>
                <div class="list_zw"></div>
            </div>
            <div class="pagination">
                <el-pagination
                    @current-change="handleCurrentChange"
                    :current-page="currentPage"
                    :page-sizes="[10, 20, 30, 40]"
                    :page-size="10"
                    layout="total, prev, pager, next, jumper"
                    :total="50">
                </el-pagination>
                <div class="pagination_info">Copyright Â© 2022 - 2023 æ™ºèƒ½åˆ¶é€ è¯Šæ–­ç»¼åˆæœåŠ¡å¹³å°. All Rights Reserved.  ç‰ˆæƒæ‰€æœ‰</div>
            </div>
        </div>
        <!--    è¯¦æƒ…    -->
        <OperaDetailsAWindow ref="operaDetailsAWindow" @success="" />
    </div>
</template>
<script>
    import OperaDetailsAWindow from '@/components/business/OperaDetailsAWindow'
  export default {
    name: 'serviceProviderResources',
    components: { OperaDetailsAWindow },
    data() {
      return {
        name: '',
        value: 5,
        cateList: ['全部','新材料','其他','新型平板显示','生物医药','食品加工','冶金','汽车工业','轻工纺织','装备制造','化工','电子产品及软件','生产性服务业','节能环保','家具制造行业']
      }
    },
    methods: {
      handleCurrentChange(e) {
        console.log(e)
      },
      currentPage(e) {
        console.log(e)
      },
      clearText() {
        this.name = ''
      }
    }
  }
</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_fuwushang.png");
            background-repeat: no-repeat;
            background-size: 100% 100%;
            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;
                    }
                }
                .right {
                    width: 173px;
                    height: 48px;
                    padding: 0 15px;
                    box-sizing: border-box;
                    background: #FFFFFF;
                    border-radius: 2px;
                    display: flex;
                    align-items: center;
                    justify-content: space-between;
                    img {
                        width: 16px;
                        height: 16px;
                    }
                    .right_name {
                        font-weight: 400;
                        font-size: 15px;
                        color: #333333;
                    }
                    .right_num {
                        font-weight: 600;
                        font-size: 17px;
                        color: #216EEE;
                    }
                }
            }
        }
        .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_zw {
                    width: 24%;
                    height: 0;
                }
                .list_item {
                    width: 24%;
                    height: 208px;
                    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_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_info {
                        width: 100%;
                        white-space: nowrap;
                        overflow: hidden;
                        text-overflow: ellipsis;
                        font-weight: 400;
                        font-size: 12px;
                        color: #999999;
                    }
                }
            }
            .cate {
                width: 100%;
                padding: 20px 30px;
                margin-bottom: 20px;
                box-sizing: border-box;
                background: #FFFFFF;
                border-radius: 8px;
                display: flex;
                justify-content: space-between;
                .cate_label {
                    flex-shrink: 0;
                    font-weight: 400;
                    font-size: 14px;
                    color: #666666;
                }
                .cate_val {
                    flex: 1;
                    display: flex;
                    align-items: center;
                    flex-wrap: wrap;
                    .active {
                        background: #216EEE !important;
                        border-radius: 2px !important;
                        color: #FFFFFF !important;
                    }
                    .cate_val_row {
                        padding: 4px 12px;
                        box-sizing: border-box;
                        font-weight: 400;
                        font-size: 14px;
                        color: #666666;
                        margin-right: 18px;
                        cursor: pointer;
                    }
                }
                .cate_dwon {
                    display: flex;
                    flex-shrink: 0;
                    cursor: pointer;
                    span {
                        font-weight: 400;
                        font-size: 12px;
                        color: #216EEE;
                    }
                    .el-icon-arrow-down {
                        color: #216EEE;
                    }
                }
            }
            .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>