|
@@ -1,7 +1,7 @@
|
|
|
<!--
|
|
|
* @Author: your name
|
|
|
* @Date: 2021-10-14 17:17:53
|
|
|
- * @LastEditTime: 2022-03-25 20:23:30
|
|
|
+ * @LastEditTime: 2022-03-26 19:05:06
|
|
|
* @LastEditors: your name
|
|
|
* @Description: In User Settings Edit
|
|
|
* @FilePath: \Foshan4A\src\views\dashboard\index.vue
|
|
@@ -11,59 +11,63 @@
|
|
|
<!--分类信息-->
|
|
|
<div class="flex-wrap tu-fl">
|
|
|
<div
|
|
|
- v-for="(item, index) in flList"
|
|
|
- :key="index"
|
|
|
+ v-for="item in flList"
|
|
|
+ :key="item.appId"
|
|
|
class="fl-list"
|
|
|
>
|
|
|
- <el-dropdown
|
|
|
- class="flex"
|
|
|
- @click="toApp(item)"
|
|
|
- >
|
|
|
- <div class="fl-list-img">
|
|
|
- <template v-if="item.logo">
|
|
|
- <img
|
|
|
- :alt="item.appName"
|
|
|
- :src="item.logo"
|
|
|
- >
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- <img
|
|
|
- src="../../assets/index/log_default.png"
|
|
|
- :alt="item.appName"
|
|
|
- >
|
|
|
- </template>
|
|
|
- </div>
|
|
|
- <div class="fl-list-title flex1">{{ item.appName }}</div>
|
|
|
- <el-dropdown-menu
|
|
|
- v-if="item.params.length > 1"
|
|
|
- slot="dropdown"
|
|
|
+ <template v-if="item.params.length > 1">
|
|
|
+ <el-dropdown
|
|
|
+ placement="bottom-start"
|
|
|
+ @command="handleCommand"
|
|
|
+ >
|
|
|
+ <div class="flex">
|
|
|
+ <div class="fl-list-img">
|
|
|
+ <template v-if="item.logo">
|
|
|
+ <img
|
|
|
+ :alt="item.appName"
|
|
|
+ :src="item.logo"
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <img
|
|
|
+ src="../../assets/index/log_default.png"
|
|
|
+ :alt="item.appName"
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ <div class="fl-list-title flex1">{{ item.appName }}</div>
|
|
|
+ </div>
|
|
|
+ <el-dropdown-menu slot="dropdown">
|
|
|
+ <el-dropdown-item
|
|
|
+ v-for="(p, i) in item.params"
|
|
|
+ :key="i"
|
|
|
+ :command="{ item, index: i}"
|
|
|
+ >{{ Object.entries(p).map(arr => arr[1].comment).join(' ') }}</el-dropdown-item>
|
|
|
+ </el-dropdown-menu>
|
|
|
+ </el-dropdown>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <div
|
|
|
+ class="flex"
|
|
|
+ @click="toApp(item)"
|
|
|
>
|
|
|
- <el-dropdown-item
|
|
|
- v-for="(p, i) in item.params"
|
|
|
- :key="i"
|
|
|
- >{{ Object.entries(p).map(arr => `${arr[0]}=${arr[1]}`).join(' ') }}</el-dropdown-item>
|
|
|
- </el-dropdown-menu>
|
|
|
- </el-dropdown>
|
|
|
- <!-- <div
|
|
|
- class="flex fl-list"
|
|
|
- @click="toApp(item)"
|
|
|
- >
|
|
|
- <div class="fl-list-img">
|
|
|
- <template v-if="item.logo">
|
|
|
- <img
|
|
|
- :alt="item.appName"
|
|
|
- :src="item.logo"
|
|
|
- >
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- <img
|
|
|
- src="../../assets/index/log_default.png"
|
|
|
- :alt="item.appName"
|
|
|
- >
|
|
|
- </template>
|
|
|
+ <div class="fl-list-img">
|
|
|
+ <template v-if="item.logo">
|
|
|
+ <img
|
|
|
+ :alt="item.appName"
|
|
|
+ :src="item.logo"
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <img
|
|
|
+ src="../../assets/index/log_default.png"
|
|
|
+ :alt="item.appName"
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ <div class="fl-list-title flex1">{{ item.appName }}</div>
|
|
|
</div>
|
|
|
- <div class="fl-list-title flex1">{{ item.appName }}</div>
|
|
|
- </div> -->
|
|
|
+ </template>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!--切换和搜索-->
|
|
@@ -83,8 +87,8 @@
|
|
|
@change="handleChange"
|
|
|
>
|
|
|
<el-option
|
|
|
- v-for="(item, index) in routes"
|
|
|
- :key="index"
|
|
|
+ v-for="item in routes"
|
|
|
+ :key="item.path"
|
|
|
:label="item.meta.title"
|
|
|
:value="item.path"
|
|
|
/>
|
|
@@ -215,36 +219,56 @@ export default {
|
|
|
})
|
|
|
if (result.code === 0 && result.returnData.length) {
|
|
|
this.flList = result.returnData.map(item => {
|
|
|
- const params = []
|
|
|
+ const map = {}
|
|
|
+ let params = []
|
|
|
item.inputs?.length &&
|
|
|
item.inputs.forEach(input => {
|
|
|
const key = input.AppInputName
|
|
|
- const value = input.InputValue
|
|
|
+ const site = input.AppInputSite
|
|
|
+ const type = input.AppInputType
|
|
|
+ const value = input.InputValue === 'loginName' ? 'userName' : input.InputValue
|
|
|
+ const comment = input.InputComment || '无'
|
|
|
if ((key ?? '') !== '' && (value ?? '') !== '') {
|
|
|
- if (params.length) {
|
|
|
- if (Object.hasOwnProperty.call(params[0], key)) {
|
|
|
- const len = Object.entries(params[0]).length
|
|
|
- for (let i = 0; i < len; i++) {
|
|
|
- const temp = Object.assign({}, params[i])
|
|
|
- temp[key] = value
|
|
|
- params.push(temp)
|
|
|
- }
|
|
|
- } else {
|
|
|
- params.forEach(param => {
|
|
|
- param[key] = value
|
|
|
- })
|
|
|
- }
|
|
|
- } else {
|
|
|
- params.push({
|
|
|
- [key]: value
|
|
|
+ if (map[key]?.length) {
|
|
|
+ map[key].push({
|
|
|
+ site,
|
|
|
+ type,
|
|
|
+ value,
|
|
|
+ comment
|
|
|
})
|
|
|
+ } else {
|
|
|
+ map[key] = [
|
|
|
+ {
|
|
|
+ site,
|
|
|
+ type,
|
|
|
+ value,
|
|
|
+ comment
|
|
|
+ }
|
|
|
+ ]
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
+ for (const [key, arr] of Object.entries(map)) {
|
|
|
+ if (params.length) {
|
|
|
+ const temp = this._.cloneDeep(params)
|
|
|
+ params = []
|
|
|
+ arr.forEach(obj => {
|
|
|
+ const data = this._.cloneDeep(temp)
|
|
|
+ data.forEach(item => {
|
|
|
+ item[key] = obj
|
|
|
+ })
|
|
|
+ params.push(...data)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ params = arr.map(obj => ({
|
|
|
+ [key]: obj
|
|
|
+ }))
|
|
|
+ }
|
|
|
+ }
|
|
|
item.params = params
|
|
|
return item
|
|
|
})
|
|
|
- console.log(this.flList)
|
|
|
+ // console.log(this.flList)
|
|
|
} else {
|
|
|
this.$message.error(result.message)
|
|
|
}
|
|
@@ -327,7 +351,46 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
// 应用跳转
|
|
|
- toApp(item) {
|
|
|
+ handleCommand({ item, index }) {
|
|
|
+ this.toApp(item, index)
|
|
|
+ },
|
|
|
+ toApp(item, index = 0) {
|
|
|
+ if (item.appUrl) {
|
|
|
+ const originParams = item.params.length ? item.params[index] : {}
|
|
|
+ const headers = {}
|
|
|
+ const url = []
|
|
|
+ const params = []
|
|
|
+ Object.entries(originParams).forEach(arr => {
|
|
|
+ switch (arr[1].site) {
|
|
|
+ case 'header':
|
|
|
+ headers[arr[0]] = sessionStorage.getItem(arr[1].value) || ''
|
|
|
+ break
|
|
|
+ case 'url':
|
|
|
+ url.push(`${arr[0]}=${sessionStorage.getItem(arr[1].value) || ''}`)
|
|
|
+ break
|
|
|
+ case 'body':
|
|
|
+ params.push(`${arr[0]}=${sessionStorage.getItem(arr[1].value) || ''}`)
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+ })
|
|
|
+ const form = document.createElement('form')
|
|
|
+ form.action = item.appUrl + (url.length ? ('?' + url.join('&')) : '')
|
|
|
+ form.target = '_blank'
|
|
|
+ form.method = parseInt(item.requestType) === 1 ? 'get' : 'post'
|
|
|
+ form.style.display = 'none'
|
|
|
+ for (let i = 0; i < params.length; i++) {
|
|
|
+ const input = document.createElement('input')
|
|
|
+ const map = params[i].split('=')
|
|
|
+ input.name = map[0]
|
|
|
+ input.value = map[1]
|
|
|
+ form.appendChild(input)
|
|
|
+ }
|
|
|
+ document.body.appendChild(form)
|
|
|
+ form.submit()
|
|
|
+ document.body.removeChild(form)
|
|
|
+ }
|
|
|
// if (item.appUrl) {
|
|
|
// window.open(item.appUrl)
|
|
|
// const datas = item.inputs
|