jiangping
2024-06-11 6bae45dfd31d647e4abc4e0246f495a29cc6896f
Merge remote-tracking branch 'origin/master'

# Conflicts:
# admin/src/views/task/index.vue
已修改9个文件
225 ■■■■ 文件已修改
admin/src/views/business/deviceEvent.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/interfaceLog.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/retention.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/meeting/bookings.vue 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/InterfaceLog.vue 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/task/index.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/App.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/FtpUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/deviceEvent.vue
@@ -130,7 +130,6 @@
      'field.main': 'id'
    })
    this.changeRadio('0')
    this.search()
  },
  methods: {
    changeRadio (e) {
admin/src/views/business/interfaceLog.vue
@@ -23,6 +23,11 @@
                    end-placeholder="结束日期">
                </el-date-picker>
            </el-form-item>
            <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
                <el-radio-button label="0">当天</el-radio-button>
                <el-radio-button label="1">近7天</el-radio-button>
                <el-radio-button label="2">近30天</el-radio-button>
            </el-radio-group>
            <section>
                <el-button type="primary" @click="search">搜索</el-button>
                <el-button @click="reset">重置</el-button>
@@ -78,6 +83,7 @@
  import TableLayout from '@/layouts/TableLayout'
  import Pagination from '@/components/common/Pagination'
  import OperaInterfaceLogWindow from '@/components/business/OperaInterfaceLogWindow'
import { timeForMat } from '@/utils/util'
  export default {
    name: 'InterfaceLog',
    extends: BaseTable,
@@ -89,7 +95,8 @@
          name: '',
          type: '',
          endDate: '',
          startDate: ''
        startDate: '',
        radio: '0'
        },
        time: []
      }
@@ -101,12 +108,29 @@
        'field.id': 'id',
        'field.main': 'id'
      })
      this.search()
    this.changeRadio('0')
    },
    methods: {
    changeRadio (e) {
      if (e === '0') {
        this.searchForm.startTime = timeForMat(0)[0]
        this.searchForm.endTime = timeForMat(0)[1]
        this.time = timeForMat(0)
      } else if (e === '1') {
        this.searchForm.startTime = timeForMat(6)[0]
        this.searchForm.endTime = timeForMat(6)[1]
        this.time = timeForMat(6)
      } else if (e === '2') {
        this.searchForm.startTime = timeForMat(29)[0]
        this.searchForm.endTime = timeForMat(29)[1]
        this.time = timeForMat(29)
      }
      this.search()
    },
      seleTime (e) {
        this.searchForm.startDate = e[0]
        this.searchForm.endDate = e[1]
      this.searchForm.radio = null
        this.search()
      },
      reset () {
admin/src/views/business/retention.vue
@@ -42,6 +42,15 @@
        >
        </el-date-picker>
      </el-form-item>
      <el-radio-group
        v-model="searchForm.radio"
        size="small"
        @input="changeRadio"
      >
        <el-radio-button label="0">当天</el-radio-button>
        <el-radio-button label="1">近7天</el-radio-button>
        <el-radio-button label="2">近30天</el-radio-button>
      </el-radio-group>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button @click="reset">重置</el-button>
@@ -145,6 +154,7 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import { timeForMat } from '@/utils/util'
export default {
  name: 'Retention',
  extends: BaseTable,
@@ -157,7 +167,8 @@
        type: '',
        keyWords: '',
        startTime: '',
        endTime: ''
        endTime: '',
        radio: 0
      },
      time: []
    }
@@ -169,12 +180,29 @@
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
    this.changeRadio('0')
  },
  methods: {
    changeRadio (e) {
      if (e === '0') {
        this.searchForm.startTime = timeForMat(0)[0]
        this.searchForm.endTime = timeForMat(0)[1]
        this.time = timeForMat(0)
      } else if (e === '1') {
        this.searchForm.startTime = timeForMat(6)[0]
        this.searchForm.endTime = timeForMat(6)[1]
        this.time = timeForMat(6)
      } else if (e === '2') {
        this.searchForm.startTime = timeForMat(29)[0]
        this.searchForm.endTime = timeForMat(29)[1]
        this.time = timeForMat(29)
      }
      this.search()
    },
    reset() {
      this.$refs.searchForm.resetFields()
      this.searchForm.startTime = ''
      this.searchForm.radio = '0'
      this.searchForm.endTime = ''
      this.time = []
      this.search()
@@ -182,6 +210,7 @@
    seleTime(e) {
      this.searchForm.startTime = e[0]
      this.searchForm.endTime = e[1]
      this.searchForm.radio = null
    }
  }
}
admin/src/views/meeting/bookings.vue
@@ -58,6 +58,15 @@
        ></el-date-picker>
        <!-- <el-date-picker v-model="searchForm.startTime" value-format="yyyy-MM-dd" placeholder="请输入开始时间" @change="search"/> -->
      </el-form-item>
      <el-radio-group
        v-model="searchForm.radio"
        size="small"
        @input="changeRadio"
      >
        <el-radio-button label="0">当天</el-radio-button>
        <el-radio-button label="1">近7天</el-radio-button>
        <el-radio-button label="2">近30天</el-radio-button>
      </el-radio-group>
      <!-- <el-form-item label="结束时间" prop="endTime">
        <el-date-picker v-model="searchForm.endTime" value-format="yyyy-MM-dd" placeholder="请输入结束时间" @change="search"/>
      </el-form-item> -->
@@ -143,6 +152,7 @@
import { getSystemDictData } from '@/api/system/dictData'
import { fetchList } from '@/api/business/company'
import { cancelById, bookingsDetail } from '@/api/meeting/bookings'
import { timeForMat } from '@/utils/util'
export default {
  name: 'Bookings',
  extends: BaseTable,
@@ -165,7 +175,8 @@
        name: '',
        startTime: '',
        endTime: '',
        content: ''
        content: '',
        radio: 0
      },
      props: {
        label: 'name',
@@ -181,7 +192,7 @@
      status: [
        { name: '全部', id: '' },
        { name: '正常', id: '0' },
        { name: '取消', id: '1' },
        { name: '取消', id: '1' }
      ],
      link: 'https://dmtest.ahapp.net/meeting_h5/' //H5_LINK_ADDR
    }
@@ -204,22 +215,38 @@
      })
    getSystemDictData('H5_LINK_ADDR')
      .then(res => {
        console.log(res);
        console.log(res)
        this.link=res.code
      })
    findList({status:0})
      .then(res => {
        this.rooms = res
      })
    this.search()
    this.changeRadio('0')
  },
  methods: {
    changeRadio (e) {
      if (e === '0') {
        this.searchForm.startTime = timeForMat(0)[0]
        this.searchForm.endTime = timeForMat(0)[1]
        this.time = timeForMat(0)
      } else if (e === '1') {
        this.searchForm.startTime = timeForMat(6)[0]
        this.searchForm.endTime = timeForMat(6)[1]
        this.time = timeForMat(6)
      } else if (e === '2') {
        this.searchForm.startTime = timeForMat(29)[0]
        this.searchForm.endTime = timeForMat(29)[1]
        this.time = timeForMat(29)
      }
      this.search()
    },
    newTree(tree) {
      if(tree ==null){
        return []
      }
      return tree.map(item => {
        let newItem = {...item}
        const newItem = { ...item }
        if(newItem){
          newItem.children=newItem.childList
        }
@@ -229,21 +256,23 @@
          newItem.children = this.newTree(newItem.children)
        }
        return newItem
      });
      })
    },
    selectDate(v) {
      this.searchForm.endTime = v[1] + ' 23:59:59'
      this.searchForm.startTime = v[0] + ' 00:00:00'
      this.searchForm.radio = null
    },
    reset () {
      this.$refs.searchForm.resetFields()
      this.date = []
      this.searchForm.radio = '0'
      this.searchForm.startTime = ''
      this.searchForm.endTime = ''
      this.search()
    },
    copy(row) {
      let text = `${row.realName} 邀请您加入会议\n会议主题:${row.name}\n会议室:${row.roomName}\n会议时间:${row.meetingTime}\n点击链接直接加入会议:\n${this.link}?id=${row.id}`
      const text = `${row.realName} 邀请您加入会议\n会议主题:${row.name}\n会议室:${row.roomName}\n会议时间:${row.meetingTime}\n点击链接直接加入会议:\n${this.link}?id=${row.id}`
      this.$copyText(text)
        .then(() => {
          this.$message.success('会议信息复制成功,去分享给同事吧~')
@@ -264,7 +293,6 @@
              this.$message.error(e)
            })
        })
    },
    showDetail(id) {
      bookingsDetail(id)
@@ -283,13 +311,12 @@
        .catch(e => {
          this.$message.error(e)
        })
    },
    handlePageChange (pageIndex) {
      this.__checkApi()
      this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex
      this.isWorking.search = true
      let form = JSON.parse(JSON.stringify(this.searchForm))
      const form = JSON.parse(JSON.stringify(this.searchForm))
      if (form.department.length) {
        form.departmentId = form.department[form.department.length-1]
      }
@@ -309,7 +336,7 @@
        .finally(() => {
          this.isWorking.search = false
        })
    },
  },
    }
  }
}
</script>
admin/src/views/system/InterfaceLog.vue
@@ -5,7 +5,20 @@
      :query-form-config="queryFormConfig"
      @handleQuery="getList(1)"
      @clear="clear"
    />
      @changeForm='changeForm'
    >
      <template #fastdate>
        <el-radio-group
          v-model="filters.fastdate"
          size="small"
          @input="changeRadio"
        >
          <el-radio-button label="0">当天</el-radio-button>
          <el-radio-button label="6">近7天</el-radio-button>
          <el-radio-button label="29">近30天</el-radio-button>
        </el-radio-group>
      </template>
    </QueryForm>
    <el-table v-loading="loading" :data="list" stripe>
      <el-table-column
        prop="name"
@@ -61,6 +74,7 @@
<script>
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
import dayjs from 'dayjs'
export default {
  components: {
    Pagination,
@@ -73,7 +87,9 @@
        capacity: 10,
        page: 1
      },
      filters: {},
      filters: {
        fastdate: '0'
      },
      list: [],
      total: 0,
      queryFormConfig: {
@@ -90,16 +106,35 @@
            options: []
          },
          {
            filed: 'selDate',
            type: 'daterange',
            label: '日期'
            filed: 'selTime',
            type: 'datetimerange',
            label: '起始时间'
          },
          {
            type: 'slot',
            filed: 'fastdate',
            label: ''
          }
        ],
        online: true
      }
    }
  },
  created () {
    this.changeRadio('0')
  },
  methods: {
    changeRadio (day) {
      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
      this.$set(this.filters, 'selTime', arr)
      this.getList()
    },
    changeForm (str) {
      if (str === 'selTime') {
        this.$set(this.filters, 'fastdate', null)
        this.getList()
      }
    },
    handleSub() {
      this.$refs.ruleForm.validate((valid) => {
        if (valid) {
@@ -108,7 +143,10 @@
      })
    },
    getList(page) { },
    clear() { },
    clear () {
      this.filters = { fastdate: '0' }
      this.getList()
    },
    handleSizeChange(capacity) {
      this.pagination.capacity = capacity
    }
admin/src/views/task/index.vue
@@ -5,7 +5,20 @@
      :query-form-config="queryFormConfig"
      @handleQuery="getList(1)"
      @clear="clear"
    />
      @changeForm='changeForm'
    >
      <template #fastdate>
        <el-radio-group
          v-model="filters.fastdate"
          size="small"
          @input="changeRadio"
        >
          <el-radio-button label="0">当天</el-radio-button>
          <el-radio-button label="6">近7天</el-radio-button>
          <el-radio-button label="29">近30天</el-radio-button>
        </el-radio-group>
      </template>
    </QueryForm>
    <!--  -->
    <el-tabs v-model="filters.queryType" @tab-click="(e) => getList(1)">
      <el-tab-pane label="待处理" name="0">
@@ -129,6 +142,7 @@
import OperaCarUseBookWindow from '@/components/business/OperaCarUseBookWindow'
import OperaHiddenDangerWindow from '@/components/business/OperaHiddenDangerWindow'
import OperaVisitsDesWindow from '@/components/business/OperaVisitsDesWindow'
import dayjs from 'dayjs'
import {
  taskCenterHead,
  taskCenterPage
@@ -150,7 +164,8 @@
      isShowReport: false,
      isShowDanger: false,
      filters: {
        queryType: '0'
        queryType: '0',
        fastdate: 0
      },
      queryFormConfig: {
        formItems: [
@@ -170,6 +185,11 @@
          {
            filed: 'selDate',
            type: 'daterange',
            label: '起始日期'
          },
          {
            type: 'slot',
            filed: 'fastdate',
            label: ''
          }
        ],
@@ -194,9 +214,16 @@
    }
  },
  created () {
    // this.getHeadData()
    this.changeRadio('0')
    this.getList()
  },
  methods: {
    changeRadio (day) {
      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD'), dayjs().format('YYYY-MM-DD')]
      this.$set(this.filters, 'selDate', arr)
      this.getList()
    },
    handleDetail (row) {
      if (row.objType === 2) {
        this.$refs.OperaDetailsWindow.open('公务车申请详情', row)
@@ -225,6 +252,12 @@
          this.$refs.DetailRef.getDetail()
          this.$refs.DetailRef.isShowModal = true
        })
      }
    },
    changeForm (str) {
      if (str === 'selDate') {
        this.$set(this.filters, 'fastdate', null)
        this.getList()
      }
    },
    getList (page) {
@@ -259,7 +292,8 @@
    },
    clear () {
      this.filters = {
        queryType: '0'
        queryType: '0',
        fastdate: 0
      }
      this.getList(0)
    },
h5/App.vue
@@ -8,7 +8,7 @@
            let code = ''
            if (url.indexOf('code=') !== -1) {
                const query = url.split('?')
                console.log('app-app', url);
        console.log('app-app', url)
                for (const q of query) {
                    if (q.indexOf('code=') !== -1) {
                        code = q.substring(q.indexOf('code=') + 5, q.length)
@@ -17,7 +17,7 @@
                wxAuthorize({
                    code: code
                }).then(res => {
                    console.log('app_ress', res);
          console.log('app_ress', res)
                    if (res.code === 200) {
                        that.$store.commit('setOpenId', res.data.openid)
                        if (res.data.member) {
@@ -25,6 +25,12 @@
                        }
                    }
                })
      } else {
        // const appID = 'wx4d7c10bdec51942b'
        // let uri = encodeURIComponent(url)
        // let authURL =
        //   `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appID}&redirect_uri=${uri}&response_type=code&scope=snsapi_base&state=123#wechat_redirect`
        // window.location.href = authURL
            }
        }
        // 刷新token
@@ -118,7 +124,7 @@
}
.cell.is-link::after {
    content: '';
  content: "";
    display: block;
    width: 8rpx;
    height: 8rpx;
@@ -135,7 +141,7 @@
}
.card::after {
    content: '';
  content: "";
    display: block;
    position: absolute;
    width: calc(100% - 32rpx);
@@ -189,7 +195,7 @@
    display: flex;
}
input{
    font-size: 30rpx
  font-size: 30rpx;
}
textarea {
    box-sizing: border-box;
server/system_service/src/main/java/com/doumee/core/utils/FtpUtil.java
@@ -267,7 +267,7 @@
        return false;
    }
    public boolean uploadInputstreamBatch(InputStream inputStream, String remote, Boolean close)  {
    public boolean uploadInputstreamBatch(InputStream inputStream, String remote, Boolean close , Integer index )  {
        // 设置PassiveMode传输
        try {
            ftpClient.enterLocalPassiveMode();
@@ -279,7 +279,7 @@
            if (remote.contains("/")) {
                remoteFileName = remote.substring(remote.lastIndexOf("/") + 1);
                // 创建服务器远程目录结构,创建失败直接返回
                if (StringUtils.equals(CreateDirecroty(remote, ftpClient), "2")) {
                if (Constants.equalsInteger(index,Constants.ONE) && StringUtils.equals(CreateDirecroty(remote, ftpClient), "2")) {
                    log.error("创建ftp目录失败======================="+remote);
                    return false;
                }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java
@@ -101,7 +101,7 @@
                        String date = DateUtil.getNowShortDate();
                        String fName = date + "/" + UUID.randomUUID() + endType;
                        String fileName = folder + "/" + fName;
                        boolean r = ftp.uploadInputstreamBatch(is, fileName, Constants.equalsInteger(index ,fileList.size()));
                        boolean r = ftp.uploadInputstreamBatch(is, fileName, Constants.equalsInteger(index ,fileList.size()),index);
                        if (r) {
                            JSONObject fileJSON = new JSONObject();
                            fileJSON.put("url", prefixPath + fileName);