lrf 4 ay önce
ebeveyn
işleme
951784c438

+ 19 - 2
src/api/api.ts

@@ -1,3 +1,4 @@
+import { get } from 'lodash-es';
 import { AxiosWrapper } from './axios-wrapper.js'
 const axios = new AxiosWrapper();
 /**common */
@@ -55,8 +56,8 @@ const jtjs = {
 /**集团新闻模块 */
 const jtxw = {
   /**列表查询 type:党建天地:djtd; 政策法规:zcfg; 招标采购:zbcg; 集团要闻: jtyw */
-  query: async (type: string, skip = 0, limit = 4) => {
-    const res = await axios.$get(`/jtxw/list/${type}`, { skip, limit })
+  query: async (type: string, query = {}) => {
+    const res = await axios.$get(`/jtxw/list/${type}`, query)
     return res;
   },
   /**详情查询 */
@@ -189,6 +190,22 @@ const myzj = {
     const res = await axios.$get(`/myzj/detail/${content_id}`)
     return res;
   },
+  questionCreate: async (data: object) => {
+    const res = await axios.$post(`/myzj/question`, data)
+    return res;
+  },
+  questionUpdate: async (data: object) => {
+    const res = await axios.$post(`/myzj/question/${get(data, 'id')}`, data)
+    return res;
+  },
+  questionQuery: async (query: any) => {
+    const res = await axios.$get(`/myzj/question`, query)
+    return res;
+  },
+  questionFetch: async (id: any) => {
+    const res = await axios.$get(`/myzj/question/${id}`)
+    return res;
+  },
 }
 /**供水信息模块 */
 const gsxx = {

+ 32 - 0
src/router/modules/winRouter.ts

@@ -23,6 +23,14 @@ export const winRouter = [
       title: '集团新闻',
     },
   },
+  {
+    path: '/newsDetail',
+    component: () => import('../../views/win/newsDetail.vue'),
+    name: 'newsDetail',
+    meta: {
+      title: '集团新闻',
+    },
+  },
   {
     path: '/messIndex',
     component: () => import('../../views/win/messIndex.vue'),
@@ -31,6 +39,30 @@ export const winRouter = [
       title: '信息公开',
     },
   },
+  {
+    path: '/messService',
+    component: () => import('../../views/win/messService.vue'),
+    name: 'messService',
+    meta: {
+      title: '信息公开',
+    },
+  },
+  {
+    path: '/messServiceWater',
+    component: () => import('../../views/win/messServiceWater.vue'),
+    name: 'messServiceWater',
+    meta: {
+      title: '信息公开',
+    },
+  },
+  {
+    path: '/messInfo',
+    component: () => import('../../views/win/messInfo.vue'),
+    name: 'messInfo',
+    meta: {
+      title: '信息公开',
+    },
+  },
   {
     path: '/popularwillIndex',
     component: () => import('../../views/win/popularwillIndex.vue'),

+ 1 - 0
src/views/win/introduceDetail.vue

@@ -16,6 +16,7 @@
   </el-row>
 </template>
 <script setup lang="ts">
+// TODO:需要自己排下版
 /* 菜单 */
 import menusIndex from '../../components/windows/menusIndex.vue'
 /* 底部信息 */

+ 1 - 1
src/views/win/introduceParts/combriefIndex.vue

@@ -86,7 +86,7 @@ const init = async () => {
 const toOpen = () => {
   const channel_id = get(info, 'value.channel_id')
   if (!channel_id) return
-  window.open(`/introduceDetail?channel_id=${channel_id}`)
+  window.open(`/${import.meta.env.VITE_BASE_URL}/introduceDetail?channel_id=${channel_id}`)
 }
 </script>
 <style scoped lang="scss">

+ 1 - 1
src/views/win/introduceParts/fengmaoIndex.vue

@@ -44,7 +44,7 @@ const list = ref([
   },
 ])
 const toOpen = (path: string) => {
-  window.open(path)
+  window.open(`/${import.meta.env.VITE_BASE_URL}${path}`)
 }
 </script>
 <style scoped lang="scss">

+ 2 - 0
src/views/win/messIndex.vue

@@ -25,6 +25,8 @@
 </template>
 
 <script setup lang="ts">
+// TODO: 企业服务:用水发展是一个带标签页的详情页;剩下的是另一个标签页的详情页
+// 企业信息是一个带标签页的详情页
 defineOptions({ name: 'introduceIndex' })
 /* 菜单 */
 import menusIndex from '../../components/windows/menusIndex.vue'

+ 83 - 0
src/views/win/messInfo.vue

@@ -0,0 +1,83 @@
+<template>
+  <el-row class="introduce">
+    <el-col :span="24" class="bigImage"></el-col>
+    <el-col :span="24" class="info">
+      <el-col :span="24" class="menus">
+        <menusIndex />
+      </el-col>
+      <el-col :span="24" class="bottom">
+        <el-col :span="24" class="zero"> title </el-col>
+        <el-col :span="24" class="zero"> content </el-col>
+      </el-col>
+      <el-col :span="24" class="foot">
+        <foot-index />
+      </el-col>
+    </el-col>
+  </el-row>
+</template>
+<script setup lang="ts">
+// 信息公开-企业信息详情页
+// TODO:需要自己排下版
+/* 菜单 */
+import menusIndex from '../../components/windows/menusIndex.vue'
+/* 底部信息 */
+import footIndex from '../../components/windows/footIndex.vue'
+import { common } from '@/api/api'
+import { get } from 'lodash-es'
+import { ref, onMounted, computed } from 'vue'
+import { useRoute } from 'vue-router'
+const route = useRoute()
+const data = ref()
+onMounted(() => {
+  init()
+})
+const content_id = computed(() => {
+  return get(route, 'query.content_id')
+})
+const init = async () => {
+  const result = await common.content(content_id.value)
+  if (result.errcode == 0) {
+    data.value = get(result, 'data')
+  }
+}
+</script>
+<style scoped lang="scss">
+.introduce {
+  position: relative;
+
+  .bigImage {
+    height: 480px;
+    overflow: hidden;
+    background-image: url('/brief5.png');
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+  }
+
+  .info {
+    position: absolute;
+    top: 0;
+    width: 100%;
+    height: 100vh;
+    overflow: hidden;
+
+    .menus {
+      height: 66px;
+      overflow: hidden;
+    }
+
+    .bottom {
+      height: calc(100vh - 350px);
+      overflow-y: auto;
+      margin: 0 auto;
+
+      .zero {
+        margin: 0 0 40px 0;
+      }
+
+      .top {
+        padding: 0 17%;
+      }
+    }
+  }
+}
+</style>

+ 29 - 13
src/views/win/messParts/commessIndex.vue

@@ -5,7 +5,13 @@
         <dividerIndex :info="{ title: '企业信息', enTitle: 'Information' }" />
       </el-col>
       <el-col :span="24" class="infoList">
-        <el-col :span="6" class="list" v-for="(item, index) in list" :key="index">
+        <el-col
+          :span="6"
+          class="list"
+          v-for="(item, index) in list"
+          :key="index"
+          @click="toOpen(item.to)"
+        >
           <el-col :span="24" class="imgs">
             <el-image class="images" :src="item.url"></el-image>
           </el-col>
@@ -25,37 +31,48 @@ import dividerIndex from '../../../components/windows/dividerIndex.vue'
 const list = ref<any[]>([
   {
     url: 'commess1.png',
-    title: '机构设置'
+    title: '机构设置',
+    to: '/messInfo?tag=1',
   },
   {
     url: 'commess2.png',
-    title: '政策法规'
+    title: '政策法规',
+    to: '/newsIndex?tag=2',
   },
   {
     url: 'commess3.png',
-    title: '排水公司信息公开'
+    title: '排水公司信息公开',
+    to: '/messInfo?tag=3',
   },
   {
     url: 'commess4.png',
-    title: '水厂环境信息公开'
+    title: '水厂环境信息公开',
+    to: '/messInfo?tag=4',
   },
   {
     url: 'commess5.png',
-    title: '行业自律'
+    title: '行业自律',
+    to: '/messInfo?tag=5',
   },
   {
     url: 'commess6.png',
-    title: '长春水务集团2018年政府信息公开'
+    title: '长春水务集团2018年政府信息公开',
+    to: '/messInfo?tag=6',
   },
   {
     url: 'commess7.png',
-    title: '长春水务集团2019年工作'
+    title: '长春水务集团2019年工作',
+    to: '/messInfo?tag=7',
   },
   {
     url: 'commess8.png',
-    title: '智慧水务(互联网+供水服务)'
-  }
+    title: '智慧水务(互联网+供水服务)',
+    to: '/messInfo?tag=8',
+  },
 ])
+const toOpen = (path: string) => {
+  window.open(`/${import.meta.env.VITE_BASE_URL}${path}`)
+}
 </script>
 <style scoped lang="scss">
 .main {
@@ -74,14 +91,13 @@ const list = ref<any[]>([
       max-width: 23.3%;
       border-radius: 5px;
       box-shadow: 0 0 5px #cccccc;
-      background-color: #FFFFFF;
+      background-color: #ffffff;
 
       .imgs {
         border-radius: 5px;
 
         .images {
           border-radius: 5px;
-
         }
       }
 
@@ -98,4 +114,4 @@ const list = ref<any[]>([
     }
   }
 }
-</style>
+</style>

+ 105 - 86
src/views/win/messParts/serviceIndex.vue

@@ -1,19 +1,25 @@
 <template>
-      <el-row class="main animate__animated animate__backInLeft">
-            <el-col :span="24" class="info">
-                  <el-col :span="24" class="top">
-                        <dividerIndex :info="{ title: '企业服务', enTitle: 'Enterprise Services' }" />
-                  </el-col>
-                  <el-col :span="24" class="infoList">
-                        <el-col :span="6" class="list" v-for="(item, index) in list" :key="index">
-                              <el-col :span="24" class="imgs">
-                                    <el-image class="images" :src="item.url"></el-image>
-                              </el-col>
-                              <el-col :span="24" class="title">{{ item.title }}</el-col>
-                        </el-col>
-                  </el-col>
-            </el-col>
-      </el-row>
+  <el-row class="main animate__animated animate__backInLeft">
+    <el-col :span="24" class="info">
+      <el-col :span="24" class="top">
+        <dividerIndex :info="{ title: '企业服务', enTitle: 'Enterprise Services' }" />
+      </el-col>
+      <el-col :span="24" class="infoList">
+        <el-col
+          :span="6"
+          class="list"
+          v-for="(item, index) in list"
+          :key="index"
+          @click="toOpen(item.to)"
+        >
+          <el-col :span="24" class="imgs">
+            <el-image class="images" :src="item.url"></el-image>
+          </el-col>
+          <el-col :span="24" class="title">{{ item.title }}</el-col>
+        </el-col>
+      </el-col>
+    </el-col>
+  </el-row>
 </template>
 
 <script setup lang="ts">
@@ -23,86 +29,99 @@ import dividerIndex from '../../../components/windows/dividerIndex.vue'
 
 // eslint-disable-next-line @typescript-eslint/no-explicit-any
 const list = ref<any[]>([
-      {
-            url: 'mess1.png',
-            title: '用水发展'
-      },
-      {
-            url: 'mess2.png',
-            title: '服务信息'
-      },
-      {
-            url: 'mess3.png',
-            title: '服务项目'
-      },
-      {
-            url: 'mess4.png',
-            title: '服务收费'
-      },
-      {
-            url: 'mess5.png',
-            title: '服务监督'
-      },
-      {
-            url: 'mess6.png',
-            title: '应急服务预案'
-      },
-      {
-            url: 'mess7.png',
-            title: '决策信息公开'
-      },
-      {
-            url: 'mess8.png',
-            title: '重要政策落实情况'
-      },
-      {
-            url: 'mess9.png',
-            title: '企业生产经营情况'
-      },
-      {
-            url: 'mess10.png',
-            title: '企业与相对人的争议解决方式'
-      }
+  {
+    url: 'mess1.png',
+    title: '用水发展',
+    to: '/messServiceWater?tag=1',
+  },
+  {
+    url: 'mess2.png',
+    title: '服务信息',
+    to: '/messService?tag=1',
+  },
+  {
+    url: 'mess3.png',
+    title: '服务项目',
+    to: '/messService?tag=2',
+  },
+  {
+    url: 'mess4.png',
+    title: '服务收费',
+    to: '/messService?tag=3',
+  },
+  {
+    url: 'mess5.png',
+    title: '服务监督',
+    to: '/messService?tag=4',
+  },
+  {
+    url: 'mess6.png',
+    title: '应急服务预案',
+    to: '/messService?tag=5',
+  },
+  {
+    url: 'mess7.png',
+    title: '决策信息公开',
+    to: '/messService?tag=6',
+  },
+  {
+    url: 'mess8.png',
+    title: '重要政策落实情况',
+    to: '/messService?tag=7',
+  },
+  {
+    url: 'mess9.png',
+    title: '企业生产经营情况',
+    to: '/messService?tag=8',
+  },
+  {
+    url: 'mess10.png',
+    title: '企业与相对人的争议解决方式',
+    to: '/messService?tag=9',
+  },
 ])
+const toOpen = (path: string) => {
+  window.open(`/${import.meta.env.VITE_BASE_URL}${path}`)
+}
 </script>
 <style scoped lang="scss">
 .main {
-      padding: 0 17%;
-
-      .top {
-            margin: 40px 0;
-      }
+  padding: 0 17%;
 
-      .infoList {
-            display: flex;
-            flex-wrap: wrap;
+  .top {
+    margin: 40px 0;
+  }
 
-            .list {
-                  max-width: 18.6%;
-                  margin: 0 20px 60px 0;
+  .infoList {
+    display: flex;
+    flex-wrap: wrap;
 
-                  .imgs {
-                        margin: 0 0 10px 0;
+    .list {
+      max-width: 18.6%;
+      margin: 0 20px 60px 0;
 
-                        .images {
-                              width: 100%;
-                        }
-                  }
+      .imgs {
+        margin: 0 0 10px 0;
 
-                  .title {
-                        color: rgb(25, 25, 26);
-                        font-family: '黑体';
-                        font-size: 24px;
-                        font-weight: 500;
-                        line-height: 35px;
-                        letter-spacing: 0px;
-                        text-align: center;
-                  }
-            }
+        .images {
+          width: 100%;
+        }
+      }
 
-            .list:nth-child(5n) {
-                  margin: 0 0 60px 0;
-            }
+      .title {
+        color: rgb(25, 25, 26);
+        font-family: '黑体';
+        font-size: 24px;
+        font-weight: 500;
+        line-height: 35px;
+        letter-spacing: 0px;
+        text-align: center;
       }
+    }
+
+    .list:nth-child(5n) {
+      margin: 0 0 60px 0;
+    }
+  }
 }
-</style>
+</style>

+ 83 - 0
src/views/win/messService.vue

@@ -0,0 +1,83 @@
+<template>
+  <el-row class="introduce">
+    <el-col :span="24" class="bigImage"></el-col>
+    <el-col :span="24" class="info">
+      <el-col :span="24" class="menus">
+        <menusIndex />
+      </el-col>
+      <el-col :span="24" class="bottom">
+        <el-col :span="24" class="zero"> title </el-col>
+        <el-col :span="24" class="zero"> content </el-col>
+      </el-col>
+      <el-col :span="24" class="foot">
+        <foot-index />
+      </el-col>
+    </el-col>
+  </el-row>
+</template>
+<script setup lang="ts">
+// 信息公开-企业服务-服务的详情页
+// TODO:需要自己排下版
+/* 菜单 */
+import menusIndex from '../../components/windows/menusIndex.vue'
+/* 底部信息 */
+import footIndex from '../../components/windows/footIndex.vue'
+import { common } from '@/api/api'
+import { get } from 'lodash-es'
+import { ref, onMounted, computed } from 'vue'
+import { useRoute } from 'vue-router'
+const route = useRoute()
+const data = ref()
+onMounted(() => {
+  init()
+})
+const content_id = computed(() => {
+  return get(route, 'query.content_id')
+})
+const init = async () => {
+  const result = await common.content(content_id.value)
+  if (result.errcode == 0) {
+    data.value = get(result, 'data')
+  }
+}
+</script>
+<style scoped lang="scss">
+.introduce {
+  position: relative;
+
+  .bigImage {
+    height: 480px;
+    overflow: hidden;
+    background-image: url('/brief5.png');
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+  }
+
+  .info {
+    position: absolute;
+    top: 0;
+    width: 100%;
+    height: 100vh;
+    overflow: hidden;
+
+    .menus {
+      height: 66px;
+      overflow: hidden;
+    }
+
+    .bottom {
+      height: calc(100vh - 350px);
+      overflow-y: auto;
+      margin: 0 auto;
+
+      .zero {
+        margin: 0 0 40px 0;
+      }
+
+      .top {
+        padding: 0 17%;
+      }
+    }
+  }
+}
+</style>

+ 83 - 0
src/views/win/messServiceWater.vue

@@ -0,0 +1,83 @@
+<template>
+  <el-row class="introduce">
+    <el-col :span="24" class="bigImage"></el-col>
+    <el-col :span="24" class="info">
+      <el-col :span="24" class="menus">
+        <menusIndex />
+      </el-col>
+      <el-col :span="24" class="bottom">
+        <el-col :span="24" class="zero"> title </el-col>
+        <el-col :span="24" class="zero"> content </el-col>
+      </el-col>
+      <el-col :span="24" class="foot">
+        <foot-index />
+      </el-col>
+    </el-col>
+  </el-row>
+</template>
+<script setup lang="ts">
+// 信息公开-企业服务-用水发展的详情页
+// TODO:需要自己排下版
+/* 菜单 */
+import menusIndex from '../../components/windows/menusIndex.vue'
+/* 底部信息 */
+import footIndex from '../../components/windows/footIndex.vue'
+import { common } from '@/api/api'
+import { get } from 'lodash-es'
+import { ref, onMounted, computed } from 'vue'
+import { useRoute } from 'vue-router'
+const route = useRoute()
+const data = ref()
+onMounted(() => {
+  init()
+})
+const content_id = computed(() => {
+  return get(route, 'query.content_id')
+})
+const init = async () => {
+  const result = await common.content(content_id.value)
+  if (result.errcode == 0) {
+    data.value = get(result, 'data')
+  }
+}
+</script>
+<style scoped lang="scss">
+.introduce {
+  position: relative;
+
+  .bigImage {
+    height: 480px;
+    overflow: hidden;
+    background-image: url('/brief5.png');
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+  }
+
+  .info {
+    position: absolute;
+    top: 0;
+    width: 100%;
+    height: 100vh;
+    overflow: hidden;
+
+    .menus {
+      height: 66px;
+      overflow: hidden;
+    }
+
+    .bottom {
+      height: calc(100vh - 350px);
+      overflow-y: auto;
+      margin: 0 auto;
+
+      .zero {
+        margin: 0 0 40px 0;
+      }
+
+      .top {
+        padding: 0 17%;
+      }
+    }
+  }
+}
+</style>

+ 82 - 0
src/views/win/newsDetail.vue

@@ -0,0 +1,82 @@
+<template>
+  <el-row class="introduce">
+    <el-col :span="24" class="bigImage"></el-col>
+    <el-col :span="24" class="info">
+      <el-col :span="24" class="menus">
+        <menusIndex />
+      </el-col>
+      <el-col :span="24" class="bottom">
+        <el-col :span="24" class="zero"> title </el-col>
+        <el-col :span="24" class="zero"> content </el-col>
+      </el-col>
+      <el-col :span="24" class="foot">
+        <foot-index />
+      </el-col>
+    </el-col>
+  </el-row>
+</template>
+<script setup lang="ts">
+// TODO:需要自己排下版
+/* 菜单 */
+import menusIndex from '../../components/windows/menusIndex.vue'
+/* 底部信息 */
+import footIndex from '../../components/windows/footIndex.vue'
+import { common } from '@/api/api'
+import { get } from 'lodash-es'
+import { ref, onMounted, computed } from 'vue'
+import { useRoute } from 'vue-router'
+const route = useRoute()
+const data = ref()
+onMounted(() => {
+  init()
+})
+const content_id = computed(() => {
+  return get(route, 'query.content_id')
+})
+const init = async () => {
+  const result = await common.content(content_id.value)
+  if (result.errcode == 0) {
+    data.value = get(result, 'data')
+  }
+}
+</script>
+<style scoped lang="scss">
+.introduce {
+  position: relative;
+
+  .bigImage {
+    height: 480px;
+    overflow: hidden;
+    background-image: url('/brief5.png');
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+  }
+
+  .info {
+    position: absolute;
+    top: 0;
+    width: 100%;
+    height: 100vh;
+    overflow: hidden;
+
+    .menus {
+      height: 66px;
+      overflow: hidden;
+    }
+
+    .bottom {
+      height: calc(100vh - 350px);
+      overflow-y: auto;
+      margin: 0 auto;
+
+      .zero {
+        margin: 0 0 40px 0;
+      }
+
+      .top {
+        padding: 0 17%;
+      }
+    }
+  }
+}
+</style>

+ 225 - 192
src/views/win/newsParts/listIndex.vue

@@ -1,227 +1,260 @@
 <template>
-      <el-row class="main animate__animated animate__backInLeft">
-            <el-col :span="24" class="info">
-                  <el-col :span="24" class="tabs">
-                        <el-col :span="6" :class="['tabList', item.id == tabActive ? 'tabActiveList' : '']"
-                              v-for="(item, index) in tabList" :key="index" @click="tabChange(item)">
-                              {{ item.title }}
-                        </el-col>
-                  </el-col>
-                  <el-col :span="24" class="infoList">
-                        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index">
-                              <el-col :span="3" class="date">
-                                    <el-col :span="24" class="dateInfo">
-                                          <el-col :span="24" class="days">
-                                                {{ dayjs(item.date).format('DD-MM') }}
-                                          </el-col>
-                                          <el-col :span="24" class="years">
-                                                --{{ dayjs(item.date).format('YYYY') }}--
-                                          </el-col>
-                                    </el-col>
-                              </el-col>
-                              <el-col :span="14" class="mess">
-                                    <el-col :span="24" class="title">
-                                          {{ item.title }}
-                                    </el-col>
-                                    <el-col :span="24" class="brief">
-                                          {{ item.brief }}
-                                    </el-col>
-                              </el-col>
-                              <el-col :span="6" class="imgs">
-                                    <el-image class="images" :src="item.url"></el-image>
-                              </el-col>
-                        </el-col>
-                  </el-col>
-                  <el-col :span="24" class="pages">
-                        <pages-index :total="total" @search="toSearch" />
-                  </el-col>
+  <el-row class="main animate__animated animate__backInLeft">
+    <el-col :span="24" class="info">
+      <el-col :span="24" class="tabs">
+        <el-col
+          :span="6"
+          :class="['tabList', item.id == tabActive ? 'tabActiveList' : '']"
+          v-for="(item, index) in tabList"
+          :key="index"
+          @click="tabChange(item)"
+        >
+          {{ item.title }}
+        </el-col>
+      </el-col>
+      <el-col :span="24" class="infoList">
+        <el-col
+          :span="24"
+          class="list"
+          v-for="(item, index) in list"
+          :key="index"
+          @click="toDetail(item)"
+        >
+          <el-col :span="3" class="date">
+            <el-col :span="24" class="dateInfo">
+              <el-col :span="24" class="days">
+                {{ dayjs(item.date).format('DD-MM') }}
+              </el-col>
+              <el-col :span="24" class="years"> --{{ dayjs(item.date).format('YYYY') }}-- </el-col>
             </el-col>
-      </el-row>
+          </el-col>
+          <el-col :span="14" class="mess">
+            <el-col :span="24" class="title">
+              {{ item.title }}
+            </el-col>
+            <el-col :span="24" class="brief">
+              {{ item.brief }}
+            </el-col>
+          </el-col>
+          <el-col :span="6" class="imgs">
+            <el-image class="images" :src="item.url"></el-image>
+          </el-col>
+        </el-col>
+      </el-col>
+      <el-col :span="24" class="pages">
+        <pages-index :total="total" @search="toSearch" />
+      </el-col>
+    </el-col>
+  </el-row>
 </template>
 
 <script setup lang="ts">
-
 import { ref, onMounted } from 'vue'
 import dayjs from 'dayjs'
 
 /* 分页 */
 import pagesIndex from '../../../components/windows/pagesIndex.vue'
+import { get } from 'lodash-es'
 
 const tabList = ref([
-      {
-            id: '1',
-            title: '党建天地'
-      },
-      {
-            id: '2',
-            title: '政策法规'
-      },
-      {
-            id: '3',
-            title: '招标采购'
-      },
-      {
-            id: '4',
-            title: '集团要闻'
-      }
+  {
+    id: '1',
+    title: '党建天地',
+    type: 'djtd',
+  },
+  {
+    id: '2',
+    title: '政策法规',
+    type: 'zcfg',
+  },
+  {
+    id: '3',
+    title: '招标采购',
+    type: 'zbcg',
+  },
+  {
+    id: '4',
+    title: '集团要闻',
+    type: 'jtyw',
+  },
 ])
 const tabActive = ref('1')
 
 // eslint-disable-next-line @typescript-eslint/no-explicit-any
 const list = ref<any[]>([
-      {
-            id: '1',
-            title: '集团召开2021年度安全生产委员会第一次全体(扩大)视频会议',
-            brief: '1月29日,集团召开2021年度安全生产委员会第一次全体(扩大)视频会议,会议由集团总经理王爽主持。会上,集团副总经理于懿通报了2020年度安全生产工作情况,安排部署下阶段重点工作。集团安保部副部长张凯传达国家、省、市...',
-            date: '2024-12-24',
-            url: 'news2.png'
-      },
-      {
-            id: '2',
-            title: '集团召开2021年度安全生产委员会第一次全体(扩大)视频会议',
-            brief: '1月29日,集团召开2021年度安全生产委员会第一次全体(扩大)视频会议,会议由集团总经理王爽主持。会上,集团副总经理于懿通报了2020年度安全生产工作情况,安排部署下阶段重点工作。集团安保部副部长张凯传达国家、省、市...',
-            date: '2024-12-24',
-            url: 'news3.png'
-      },
-      {
-            id: '3',
-            title: '集团召开2021年度安全生产委员会第一次全体(扩大)视频会议',
-            brief: '1月29日,集团召开2021年度安全生产委员会第一次全体(扩大)视频会议,会议由集团总经理王爽主持。会上,集团副总经理于懿通报了2020年度安全生产工作情况,安排部署下阶段重点工作。集团安保部副部长张凯传达国家、省、市...',
-            date: '2024-12-24',
-            url: 'news4.png'
-      },
-      {
-            id: '4',
-            title: '集团召开2021年度安全生产委员会第一次全体(扩大)视频会议',
-            brief: '1月29日,集团召开2021年度安全生产委员会第一次全体(扩大)视频会议,会议由集团总经理王爽主持。会上,集团副总经理于懿通报了2020年度安全生产工作情况,安排部署下阶段重点工作。集团安保部副部长张凯传达国家、省、市...',
-            date: '2024-12-24',
-            url: 'news2.png'
-      }
+  {
+    id: '1',
+    title: '集团召开2021年度安全生产委员会第一次全体(扩大)视频会议',
+    brief:
+      '1月29日,集团召开2021年度安全生产委员会第一次全体(扩大)视频会议,会议由集团总经理王爽主持。会上,集团副总经理于懿通报了2020年度安全生产工作情况,安排部署下阶段重点工作。集团安保部副部长张凯传达国家、省、市...',
+    date: '2024-12-24',
+    url: 'news2.png',
+  },
+  {
+    id: '2',
+    title: '集团召开2021年度安全生产委员会第一次全体(扩大)视频会议',
+    brief:
+      '1月29日,集团召开2021年度安全生产委员会第一次全体(扩大)视频会议,会议由集团总经理王爽主持。会上,集团副总经理于懿通报了2020年度安全生产工作情况,安排部署下阶段重点工作。集团安保部副部长张凯传达国家、省、市...',
+    date: '2024-12-24',
+    url: 'news3.png',
+  },
+  {
+    id: '3',
+    title: '集团召开2021年度安全生产委员会第一次全体(扩大)视频会议',
+    brief:
+      '1月29日,集团召开2021年度安全生产委员会第一次全体(扩大)视频会议,会议由集团总经理王爽主持。会上,集团副总经理于懿通报了2020年度安全生产工作情况,安排部署下阶段重点工作。集团安保部副部长张凯传达国家、省、市...',
+    date: '2024-12-24',
+    url: 'news4.png',
+  },
+  {
+    id: '4',
+    title: '集团召开2021年度安全生产委员会第一次全体(扩大)视频会议',
+    brief:
+      '1月29日,集团召开2021年度安全生产委员会第一次全体(扩大)视频会议,会议由集团总经理王爽主持。会上,集团副总经理于懿通报了2020年度安全生产工作情况,安排部署下阶段重点工作。集团安保部副部长张凯传达国家、省、市...',
+    date: '2024-12-24',
+    url: 'news2.png',
+  },
 ])
 const total = ref(40)
-
-
+const tabType = ref('djtd')
 /* 选择 */
 const tabChange = (event: { id: string }) => {
-      tabActive.value = event.id
+  tabActive.value = event.id
+  const tab = tabList.value.find((f) => f.id == event.id)
+  if (!tab) return
+  const type = get(tab, 'type')
+  if (!type) return
+  tabType.value = type
+  toSearch()
 }
 
+import { jtxw } from '@/api/api'
 /* 查询 */
 const toSearch = async ({ skip = 0, limit = 10, ...info } = {}) => {
-      console.log(skip, limit);
-      console.log(info);
+  const result = await jtxw.query(tabType.value, { skip, limit, ...info })
+  if (result.errcode == 0) {
+    const resList = get(result, 'data.data', [])
+    const resTotal = get(result, 'data.total', 0)
+    if (resList.length > 0) {
+      list.value = resList
+      total.value = resTotal
+    }
+  }
+}
+const toDetail = (data: object) => {
+  const content_id = get(data, 'content_id')
+  window.open(`/${import.meta.env.VITE_BASE_URL}/newsDetail?content_id=${content_id}`)
 }
 /* 初始化 */
 onMounted(() => {
-      toSearch()
+  toSearch()
 })
 </script>
 <style scoped lang="scss">
 .main {
-      padding: 0 17%;
-
-      .info {
-            .tabs {
-                  display: flex;
-                  padding: 0 30%;
-                  margin: 0 0 50px 0;
-
-                  .tabList {
-                        text-align: center;
-                        color: rgb(102, 102, 102);
-                        font-family: '黑体';
-                        font-size: 18px;
-                        font-weight: 500;
-                        line-height: 26px;
-                        letter-spacing: 0px;
-                        border-bottom: 4px solid transparent;
-                  }
-
-                  .tabList:hover {
-                        cursor: pointer;
-                        color: rgb(25, 25, 26);
-                        border-bottom: 4px solid rgb(21, 134, 255);
-                  }
-
-                  .tabActiveList {
-                        color: rgb(25, 25, 26);
-                        border-bottom: 4px solid rgb(21, 134, 255);
-
-                  }
-            }
-
-            .infoList {
-                  .list {
-                        display: flex;
-                        border-bottom: 1px solid rgb(217, 217, 217);
-                        margin: 0 0 30px 0;
-                        padding: 0 0 30px 0;
-
-                        .date {
-                              display: flex;
-                              align-items: center;
-                              justify-content: center;
-                              text-align: center;
-
-                              .days {
-                                    color: rgb(28, 136, 254);
-                                    font-family: '钉钉进步体';
-                                    font-size: 36px;
-                                    font-weight: 400;
-                                    line-height: 40px;
-                                    letter-spacing: 0px;
-                              }
-
-                              .years {
-                                    color: rgb(28, 136, 254);
-                                    font-family: '钉钉进步体';
-                                    font-size: 20px;
-                                    font-weight: 400;
-                                    line-height: 40px;
-                                    letter-spacing: 0px;
-                              }
-                        }
-
-                        .mess {
-                              padding: 0 10px 0 0;
-
-                              .title {
-                                    color: rgb(25, 25, 26);
-                                    font-family: '黑体';
-                                    font-size: 24px;
-                                    font-weight: 500;
-                                    line-height: 35px;
-                                    letter-spacing: 0px;
-                                    margin: 0 0 30px 0;
-                              }
-
-                              .brief {
-                                    color: rgb(102, 102, 102);
-                                    font-family: '黑体';
-                                    font-size: 18px;
-                                    font-weight: 400;
-                                    line-height: 32px;
-                                    letter-spacing: 0px;
-
-                                    overflow: hidden;
-                                    text-overflow: ellipsis;
-                                    -webkit-line-clamp: 3;
-                                    word-break: break-all;
-                                    display: -webkit-box;
-                                    -webkit-box-orient: vertical;
-
-                              }
-                        }
-
-                        .imgs {
-                              .images {}
-                        }
-                  }
-
-                  .list:last-child {
-                        border-bottom: none;
-                  }
-            }
+  padding: 0 17%;
+
+  .info {
+    .tabs {
+      display: flex;
+      padding: 0 30%;
+      margin: 0 0 50px 0;
+
+      .tabList {
+        text-align: center;
+        color: rgb(102, 102, 102);
+        font-family: '黑体';
+        font-size: 18px;
+        font-weight: 500;
+        line-height: 26px;
+        letter-spacing: 0px;
+        border-bottom: 4px solid transparent;
+      }
+
+      .tabList:hover {
+        cursor: pointer;
+        color: rgb(25, 25, 26);
+        border-bottom: 4px solid rgb(21, 134, 255);
+      }
+
+      .tabActiveList {
+        color: rgb(25, 25, 26);
+        border-bottom: 4px solid rgb(21, 134, 255);
+      }
+    }
+
+    .infoList {
+      .list {
+        display: flex;
+        border-bottom: 1px solid rgb(217, 217, 217);
+        margin: 0 0 30px 0;
+        padding: 0 0 30px 0;
+
+        .date {
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          text-align: center;
+
+          .days {
+            color: rgb(28, 136, 254);
+            font-family: '钉钉进步体';
+            font-size: 36px;
+            font-weight: 400;
+            line-height: 40px;
+            letter-spacing: 0px;
+          }
+
+          .years {
+            color: rgb(28, 136, 254);
+            font-family: '钉钉进步体';
+            font-size: 20px;
+            font-weight: 400;
+            line-height: 40px;
+            letter-spacing: 0px;
+          }
+        }
+
+        .mess {
+          padding: 0 10px 0 0;
+
+          .title {
+            color: rgb(25, 25, 26);
+            font-family: '黑体';
+            font-size: 24px;
+            font-weight: 500;
+            line-height: 35px;
+            letter-spacing: 0px;
+            margin: 0 0 30px 0;
+          }
+
+          .brief {
+            color: rgb(102, 102, 102);
+            font-family: '黑体';
+            font-size: 18px;
+            font-weight: 400;
+            line-height: 32px;
+            letter-spacing: 0px;
+
+            overflow: hidden;
+            text-overflow: ellipsis;
+            -webkit-line-clamp: 3;
+            word-break: break-all;
+            display: -webkit-box;
+            -webkit-box-orient: vertical;
+          }
+        }
+
+        .imgs {
+          .images {
+          }
+        }
+      }
+
+      .list:last-child {
+        border-bottom: none;
       }
+    }
+  }
 }
 </style>

+ 242 - 200
src/views/win/popularwillParts/formIndex.vue

@@ -1,240 +1,282 @@
 <template>
-      <el-row class="main animate__animated animate__backInLeft">
-            <el-col :span="24" class="info">
-                  <el-col :span="24" class="tab">
-                        <el-col :span="8" :class="['list', item.id == tabActive ? 'tabActive' : '']"
-                              v-for="(item, index) in tabList" :key="index" @click="tabChange(item)">
-                              <span>{{ item.title }}</span>
-                              <span></span>
-                        </el-col>
-                  </el-col>
-                  <el-col :span="24" class="infoForm">
-                        <el-col :span="24" class="form" v-if="tabActive == '1'">
-                              <el-col :span="24" class="formMess">
-                                    <el-form ref="formRef" :model="form" :rules="rules" label-width="auto"
-                                          label-position="top">
-                                          <el-form-item label="问题类型" prop="type">
-                                                <el-radio-group v-model="form.type" size="large">
-                                                      <el-radio-button label="投诉反馈" value="1" />
-                                                      <el-radio-button label="意见建议" value="2" />
-                                                      <el-radio-button label="咨询反馈" value="3" />
-                                                </el-radio-group>
-                                          </el-form-item>
-                                          <el-row :gutter="20">
-                                                <el-col :span="12">
-                                                      <el-form-item label="姓名" prop="name">
-                                                            <el-input v-model="form.name" placeholder="请输入姓名" />
-                                                      </el-form-item>
-                                                      <el-form-item label="电话" prop="mobile">
-                                                            <el-input v-model="form.mobile" placeholder="请输入电话" />
-                                                      </el-form-item>
-                                                      <el-form-item label="邮箱" prop="email">
-                                                            <el-input v-model="form.email" placeholder="请输入电子邮箱" />
-                                                      </el-form-item>
-                                                </el-col>
-                                                <el-col :span="12">
-                                                      <el-form-item label="地址" prop="address">
-                                                            <el-row :gutter="20" class="addressStyle">
-                                                                  <el-col :span="12">
-                                                                        <el-input v-model="form.address"
-                                                                              placeholder="街或路" />
-                                                                  </el-col>
-                                                                  <el-col :span="12">
-                                                                        <el-input v-model="form.address2"
-                                                                              placeholder="小区" />
-                                                                  </el-col>
-                                                            </el-row>
-                                                            <el-row :gutter="20">
-                                                                  <el-col :span="8">
-                                                                        <el-input v-model="form.address3"
-                                                                              placeholder="楼栋" />
-                                                                  </el-col>
-                                                                  <el-col :span="8">
-                                                                        <el-input v-model="form.address4"
-                                                                              placeholder="单元" />
-                                                                  </el-col>
-                                                                  <el-col :span="8">
-                                                                        <el-input v-model="form.address5"
-                                                                              placeholder="室" />
-                                                                  </el-col>
-                                                            </el-row>
-                                                      </el-form-item>
-                                                      <el-form-item>
-                                                            <el-input v-model="textarea" type="textarea" rows="4"
-                                                                  placeholder="点击粘贴地址" />
-                                                      </el-form-item>
-                                                </el-col>
-                                          </el-row>
-                                          <el-form-item label="反馈详情" prop="content">
-                                                <el-input v-model="form.content" placeholder="请输入反馈详情" type="textarea"
-                                                      :autosize="{ minRows: 6, maxRows: 8 }" />
-                                          </el-form-item>
-                                          <el-form-item>
-                                                <el-button type="primary" @click="toSubmit">提交反馈</el-button>
-                                                <el-button type="primary" plain @click="toRest">清空内容</el-button>
-                                          </el-form-item>
-                                    </el-form>
-                              </el-col>
-                        </el-col>
-                        <el-col :span="24" class="list" v-else-if="tabActive == '2'">
-                              <suggestion-index />
-                        </el-col>
-                        <el-col :span="24" class="back" v-else-if="tabActive == '3'">
-                              <respond-index />
-                        </el-col>
-                  </el-col>
-
-            </el-col>
-      </el-row>
+  <el-row class="main animate__animated animate__backInLeft">
+    <el-col :span="24" class="info">
+      <el-col :span="24" class="tab">
+        <el-col
+          :span="8"
+          :class="['list', item.id == tabActive ? 'tabActive' : '']"
+          v-for="(item, index) in tabList"
+          :key="index"
+          @click="tabChange(item)"
+        >
+          <span>{{ item.title }}</span>
+          <span></span>
+        </el-col>
+      </el-col>
+      <el-col :span="24" class="infoForm">
+        <el-col :span="24" class="form" v-if="tabActive == '1'">
+          <el-col :span="24" class="formMess">
+            <el-form
+              ref="formRef"
+              :model="form"
+              :rules="rules"
+              label-width="auto"
+              label-position="top"
+            >
+              <el-form-item label="问题类型" prop="type">
+                <el-radio-group v-model="form.type" size="large">
+                  <el-radio-button label="投诉反馈" value="1" />
+                  <el-radio-button label="意见建议" value="2" />
+                  <el-radio-button label="咨询反馈" value="3" />
+                </el-radio-group>
+              </el-form-item>
+              <el-row :gutter="20">
+                <el-col :span="12">
+                  <el-form-item label="姓名" prop="name">
+                    <el-input v-model="form.name" placeholder="请输入姓名" />
+                  </el-form-item>
+                  <el-form-item label="电话" prop="phone">
+                    <el-input v-model="form.phone" type="number" placeholder="请输入电话" />
+                  </el-form-item>
+                  <el-form-item label="邮箱" prop="email">
+                    <el-input v-model="form.email" placeholder="请输入电子邮箱" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="地址" :required="true">
+                    <el-row :gutter="20" class="addressStyle">
+                      <el-col :span="12">
+                        <el-input v-model="form.street" placeholder="街或路" />
+                      </el-col>
+                      <el-col :span="12">
+                        <el-input v-model="form.community" placeholder="小区" />
+                      </el-col>
+                    </el-row>
+                    <el-row :gutter="20">
+                      <el-col :span="8">
+                        <el-input v-model="form.building" placeholder="楼栋" />
+                      </el-col>
+                      <el-col :span="8">
+                        <el-input v-model="form.unit" placeholder="单元" />
+                      </el-col>
+                      <el-col :span="8">
+                        <el-input v-model="form.room" placeholder="室" />
+                      </el-col>
+                    </el-row>
+                  </el-form-item>
+                  <el-form-item>
+                    <el-input
+                      v-model="form.address"
+                      type="textarea"
+                      rows="4"
+                      placeholder="点击粘贴地址"
+                    />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-form-item label="反馈详情" prop="description">
+                <el-input
+                  v-model="form.description"
+                  placeholder="请输入反馈详情"
+                  type="textarea"
+                  :autosize="{ minRows: 6, maxRows: 8 }"
+                />
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" @click="toSubmit">提交反馈</el-button>
+                <el-button type="primary" plain @click="toRest">清空内容</el-button>
+              </el-form-item>
+            </el-form>
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="list" v-else-if="tabActive == '2'">
+          <suggestion-index />
+        </el-col>
+        <el-col :span="24" class="back" v-else-if="tabActive == '3'">
+          <respond-index />
+        </el-col>
+      </el-col>
+    </el-col>
+  </el-row>
 </template>
 
 <script setup lang="ts">
-
-import { ref, reactive } from "vue";
+import { ref, reactive } from 'vue'
 
 /* 意见记录 */
 import suggestionIndex from './suggestionIndex.vue'
 /* 热点回应 */
 import respondIndex from './respondIndex.vue'
-
+import { myzj } from '@/api/api'
+import { ElMessageBox } from 'element-plus'
+import { onMounted } from 'vue'
 
 const tabList = ref([
-      {
-            id: '1',
-            title: '投诉与建议'
-      },
-      {
-            id: '2',
-            title: '投诉与建议记录'
-      },
-      {
-            id: '3',
-            title: '热点回应'
-      }
+  {
+    id: '1',
+    title: '投诉与建议',
+  },
+  {
+    id: '2',
+    title: '投诉与建议记录',
+  },
+  {
+    id: '3',
+    title: '热点回应',
+  },
 ])
 const tabActive = ref('1')
 
-const form = ref({ type: '1', name: '', mobile: '', email: '', address: '', content: '', address2: '', address3: '', address4: '', address5: '' })
+const form = ref({
+  type: '1',
+  name: '',
+  phone: '',
+  email: '',
+  description: '',
+  street: '',
+  community: '',
+  building: '',
+  unit: '',
+  room: '',
+  address: '',
+})
 
 const rules = reactive({
-      type: [{ required: true, message: '请选择问题类型', trigger: 'changge' },],
-      name: [{ required: true, message: '请输入姓名', trigger: 'blur' },],
-      mobile: [{ required: true, message: '请输入电话', trigger: 'blur' },],
-      email: [{ required: true, message: '请输入电子邮箱 ', trigger: 'blur' },],
-      address: [{ required: true, message: '请输入地址 ', trigger: 'blur' },],
-      content: [{ required: true, message: '请输入反馈详情 ', trigger: 'blur' },],
+  type: [{ required: true, message: '请选择问题类型', trigger: 'changge' }],
+  name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
+  phone: [{ required: true, message: '请输入电话', trigger: 'blur' }],
+  email: [{ required: true, message: '请输入电子邮箱 ', trigger: 'blur' }],
+  description: [{ required: true, message: '请输入反馈详情 ', trigger: 'blur' }],
 })
 
-const textarea = ref('')
-
 const formRef = ref()
 
 /* 选择 */
 const tabChange = (event: { id: string }) => {
-      tabActive.value = event.id
+  tabActive.value = event.id
 }
 
 /* 提交 */
 const toSubmit = async () => {
-      await formRef.value.validate((valid: boolean, fields: object) => {
-            if (valid) {
-                  console.log('submit!')
-            } else {
-                  console.log('error submit!', fields)
-            }
-      })
+  await formRef.value.validate((valid: boolean, fields: object) => {
+    if (valid) {
+      toCreateQuestion()
+      console.log('submit!')
+    } else {
+      console.log('error submit!', fields)
+    }
+  })
+}
+const toCreateQuestion = async () => {
+  const result = await myzj.questionCreate(form.value)
+  if (result.errcode == 0) {
+    ElMessageBox.alert('添加成功', '提示', {
+      confirmButtonText: '确定',
+      callback: () => {
+        resetForm()
+      },
+    })
+  }
 }
 /* 清空内容 */
 const toRest = () => {
-      resetForm()
+  resetForm()
 }
 
 /* 重置表单 */
 const resetForm = () => {
-      form.value = {
-            type: '1', name: '', mobile: '', email: '', address: '', content: '', address2: '', address3: '', address4: '', address5: ''
-      }
+  form.value = {
+    type: '1',
+    name: '',
+    phone: '',
+    email: '',
+    description: '',
+    street: '',
+    community: '',
+    building: '',
+    unit: '',
+    room: '',
+    address: '',
+  }
 }
-
 </script>
 <style scoped lang="scss">
 .main {
-      padding: 0 17%;
-
-      .info {
-            .tab {
-                  display: flex;
-                  align-items: center;
-                  justify-content: center;
-                  padding: 0 15%;
-                  margin: 0 0 40px 0;
-
-                  .list {
-                        display: flex;
-                        flex-direction: column;
-                        align-items: center;
-                        justify-content: center;
-                        text-align: center;
-
-                        span {
-                              display: inline-block;
-                        }
-
-                        span:first-child {
-                              color: rgb(102, 102, 102);
-                              font-family: '黑体';
-                              font-size: 18px;
-                              font-weight: 500;
-                              line-height: 26px;
-                              letter-spacing: 0px;
-                              margin: 0 0 10px 0;
-                        }
-
-                        span:last-child {
-                              width: 180px;
-                              border-bottom: 4px solid transparent;
-                        }
-                  }
-
-                  .list:hover {
-                        cursor: pointer;
-
-                        span:first-child {
-                              color: rgb(25, 25, 26);
-                        }
-
-                        span:last-child {
-                              border-bottom: 4px solid rgb(21, 134, 255);
-                        }
-                  }
-
-                  .tabActive {
-                        span:first-child {
-                              color: rgb(25, 25, 26);
-                        }
-
-                        span:last-child {
-                              border-bottom: 4px solid rgb(21, 134, 255);
-                        }
-                  }
-            }
-
-            .infoForm {
-                  .form {
-                        padding: 0 10%;
-
-                        .formMess {
-                              border-radius: 10px;
-                              background: rgba(238, 250, 255, 0.5);
-                              padding: 40px 70px;
-                        }
-
-                        .addressStyle {
-                              margin: 0 0 10px 0;
-                        }
-
-                  }
-            }
+  padding: 0 17%;
+
+  .info {
+    .tab {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      padding: 0 15%;
+      margin: 0 0 40px 0;
+
+      .list {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        text-align: center;
+
+        span {
+          display: inline-block;
+        }
+
+        span:first-child {
+          color: rgb(102, 102, 102);
+          font-family: '黑体';
+          font-size: 18px;
+          font-weight: 500;
+          line-height: 26px;
+          letter-spacing: 0px;
+          margin: 0 0 10px 0;
+        }
+
+        span:last-child {
+          width: 180px;
+          border-bottom: 4px solid transparent;
+        }
+      }
+
+      .list:hover {
+        cursor: pointer;
+
+        span:first-child {
+          color: rgb(25, 25, 26);
+        }
+
+        span:last-child {
+          border-bottom: 4px solid rgb(21, 134, 255);
+        }
+      }
+
+      .tabActive {
+        span:first-child {
+          color: rgb(25, 25, 26);
+        }
+
+        span:last-child {
+          border-bottom: 4px solid rgb(21, 134, 255);
+        }
+      }
+    }
+
+    .infoForm {
+      .form {
+        padding: 0 10%;
+
+        .formMess {
+          border-radius: 10px;
+          background: rgba(238, 250, 255, 0.5);
+          padding: 40px 70px;
+        }
+
+        .addressStyle {
+          margin: 0 0 10px 0;
+        }
       }
+    }
+  }
 }
 </style>

+ 43 - 24
src/views/win/popularwillParts/suggestionIndex.vue

@@ -1,44 +1,63 @@
 <template>
-      <el-table :data="list" :border="true" :show-overflow-tooltip="true">
-            <el-table-column prop="type" label="问题分类" align="center" min-width="100" />
-            <el-table-column prop="name" label="用户名称" align="center" min-width="100" />
-            <el-table-column prop="reposn" label="所在区域" align="center" min-width="100" />
-            <el-table-column prop="address" label="地址" align="center" min-width="100" />
-            <el-table-column prop="pubilcDate" label="发布时间" align="center" min-width="100" />
-            <el-table-column prop="handleData" label="处理时间" align="center" min-width="100" />
-            <el-table-column prop="status" label="处理状态" align="center" min-width="100" />
-            <template #empty>
-                  <el-image class="noData" :src="noData"></el-image>
-                  <p>暂无数据</p>
-            </template>
-      </el-table>
-      <pages-index :total="total" @search="toSearch" />
+  <el-table :data="list" :border="true" :show-overflow-tooltip="true">
+    <el-table-column prop="type" label="问题分类" align="center" min-width="100" />
+    <el-table-column prop="name" label="用户名称" align="center" min-width="100" />
+    <el-table-column prop="address" label="地址" align="center" min-width="100" />
+    <el-table-column prop="created_time" label="发布时间" align="center" min-width="100" />
+    <el-table-column prop="deal_time" label="处理时间" align="center" min-width="100" />
+    <el-table-column prop="deal_status" label="处理状态" align="center" min-width="100">
+      <template #default="{ row }">
+        {{ getDealStatus(row) }}
+      </template>
+    </el-table-column>
+    <template #empty>
+      <el-image class="noData" :src="noData"></el-image>
+      <p>暂无数据</p>
+    </template>
+  </el-table>
+  <pages-index :total="total" @search="toSearch" />
 </template>
 
 <script setup lang="ts">
-
-import { ref } from "vue";
+import { ref, onMounted } from 'vue'
 /* 分页 */
 import pagesIndex from '../../../components/windows/pagesIndex.vue'
 
 const noData = ref('noData.png')
 
+onMounted(() => {
+  toSearch()
+})
+
 /* 列表 */
 const list = ref([])
 const total = ref(0)
 
-
+import { myzj } from '@/api/api'
+import { get } from 'lodash-es'
 /* 查询列表 */
-const toSearch = ({ skip = 0, limit = 10, ...info } = {}) => {
-      console.log(skip, limit);
-      console.log(info);
+const toSearch = async ({ skip = 0, limit = 10, ...info } = {}) => {
+  const result = await myzj.questionQuery({ skip, limit, ...info })
+  if (result.errcode == 0) {
+    const resultList = get(result, 'data.data', [])
+    const resultTotal = get(result, 'data.total', 0)
+    if (resultList.length > 0) {
+      list.value = resultList
+      total.value = resultTotal
+    }
+  }
+}
+const getDealStatus = (data: object) => {
+  const deal_status = get(data, 'deal_status')
+  if (deal_status == '1') return '已处理'
+  else if (deal_status == '0') return '未处理'
+  else return '暂无'
 }
-
 </script>
 <style scoped lang="scss">
 .noData {
-      width: 300px;
-      height: 200px;
-      margin: 40px 0 0 0;
+  width: 300px;
+  height: 200px;
+  margin: 40px 0 0 0;
 }
 </style>

+ 1 - 1
src/views/winParts/conductingBusiness.vue

@@ -55,7 +55,7 @@ const list = ref([
 ])
 /**打开对应的页面 */
 const toOpen = (path: string) => {
-  window.open(path)
+  window.open(`/${import.meta.env.VITE_BASE_URL}${path}`)
 }
 </script>
 <style scoped lang="scss">

+ 1 - 1
src/views/winParts/introduceIndex.vue

@@ -50,7 +50,7 @@ const init = async () => {
   }
 }
 const toOpen = () => {
-  window.open('/introduceIndex')
+  window.open(`/${import.meta.env.VITE_BASE_URL}/introduceIndex`)
 }
 </script>
 <style scoped lang="scss">

+ 1 - 1
src/views/winParts/notesIndex.vue

@@ -107,7 +107,7 @@ const toChange = (event: { id: string }) => {
       })
     } else {
       // 新开页面
-      window.open(to)
+      window.open(`/${import.meta.env.VITE_BASE_URL}${to}`)
     }
   }
 }