提交 364536b3 authored 作者: 王鹏飞's avatar 王鹏飞

chore: 旅程选择资料之后,显示对应内容

上级 697fad6b
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
"typescript": "~5.4.5", "typescript": "~5.4.5",
"unplugin-auto-import": "^0.17.5", "unplugin-auto-import": "^0.17.5",
"vite": "^5.2.10", "vite": "^5.2.10",
"vite-plugin-mkcert": "^1.17.6",
"vue-tsc": "^1.8.27" "vue-tsc": "^1.8.27"
} }
}, },
...@@ -1397,6 +1398,173 @@ ...@@ -1397,6 +1398,173 @@
"unplugin": "^1.0.1" "unplugin": "^1.0.1"
} }
}, },
"node_modules/@octokit/auth-token": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
"integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/core": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz",
"integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@octokit/auth-token": "^4.0.0",
"@octokit/graphql": "^7.1.0",
"@octokit/request": "^8.3.1",
"@octokit/request-error": "^5.1.0",
"@octokit/types": "^13.0.0",
"before-after-hook": "^2.2.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/endpoint": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz",
"integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@octokit/types": "^13.1.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/graphql": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz",
"integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@octokit/request": "^8.3.0",
"@octokit/types": "^13.0.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/openapi-types": {
"version": "22.2.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz",
"integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==",
"dev": true,
"license": "MIT"
},
"node_modules/@octokit/plugin-paginate-rest": {
"version": "11.3.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz",
"integrity": "sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@octokit/types": "^13.5.0"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"@octokit/core": "5"
}
},
"node_modules/@octokit/plugin-request-log": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz",
"integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"@octokit/core": "5"
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods": {
"version": "13.2.2",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz",
"integrity": "sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@octokit/types": "^13.5.0"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"@octokit/core": "^5"
}
},
"node_modules/@octokit/request": {
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz",
"integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@octokit/endpoint": "^9.0.1",
"@octokit/request-error": "^5.1.0",
"@octokit/types": "^13.1.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/request-error": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz",
"integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@octokit/types": "^13.1.0",
"deprecation": "^2.0.0",
"once": "^1.4.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/rest": {
"version": "20.1.1",
"resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.1.tgz",
"integrity": "sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@octokit/core": "^5.0.2",
"@octokit/plugin-paginate-rest": "11.3.1",
"@octokit/plugin-request-log": "^4.0.0",
"@octokit/plugin-rest-endpoint-methods": "13.2.2"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/types": {
"version": "13.6.1",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.1.tgz",
"integrity": "sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^22.2.0"
}
},
"node_modules/@popperjs/core": { "node_modules/@popperjs/core": {
"name": "@sxzz/popperjs-es", "name": "@sxzz/popperjs-es",
"version": "2.11.7", "version": "2.11.7",
...@@ -2850,9 +3018,10 @@ ...@@ -2850,9 +3018,10 @@
} }
}, },
"node_modules/axios": { "node_modules/axios": {
"version": "1.6.8", "version": "1.7.7",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
"integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
"license": "MIT",
"dependencies": { "dependencies": {
"follow-redirects": "^1.15.6", "follow-redirects": "^1.15.6",
"form-data": "^4.0.0", "form-data": "^4.0.0",
...@@ -2936,6 +3105,13 @@ ...@@ -2936,6 +3105,13 @@
], ],
"peer": true "peer": true
}, },
"node_modules/before-after-hook": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
"integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
"dev": true,
"license": "Apache-2.0"
},
"node_modules/big.js": { "node_modules/big.js": {
"version": "5.2.2", "version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
...@@ -3843,12 +4019,13 @@ ...@@ -3843,12 +4019,13 @@
"dev": true "dev": true
}, },
"node_modules/debug": { "node_modules/debug": {
"version": "4.3.4", "version": "4.3.7",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"ms": "2.1.2" "ms": "^2.1.3"
}, },
"engines": { "engines": {
"node": ">=6.0" "node": ">=6.0"
...@@ -3947,6 +4124,13 @@ ...@@ -3947,6 +4124,13 @@
"node": ">=0.4.0" "node": ">=0.4.0"
} }
}, },
"node_modules/deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
"dev": true,
"license": "ISC"
},
"node_modules/des.js": { "node_modules/des.js": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz",
...@@ -6219,10 +6403,11 @@ ...@@ -6219,10 +6403,11 @@
} }
}, },
"node_modules/ms": { "node_modules/ms": {
"version": "2.1.2", "version": "2.1.3",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true "dev": true,
"license": "MIT"
}, },
"node_modules/muggle-string": { "node_modules/muggle-string": {
"version": "0.3.1", "version": "0.3.1",
...@@ -6789,9 +6974,10 @@ ...@@ -6789,9 +6974,10 @@
"optional": true "optional": true
}, },
"node_modules/picocolors": { "node_modules/picocolors": {
"version": "1.0.0", "version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"license": "ISC"
}, },
"node_modules/picomatch": { "node_modules/picomatch": {
"version": "2.3.1", "version": "2.3.1",
...@@ -8532,6 +8718,13 @@ ...@@ -8532,6 +8718,13 @@
"imurmurhash": "^0.1.4" "imurmurhash": "^0.1.4"
} }
}, },
"node_modules/universal-user-agent": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
"integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
"dev": true,
"license": "ISC"
},
"node_modules/unplugin": { "node_modules/unplugin": {
"version": "1.10.0", "version": "1.10.0",
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.0.tgz", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.0.tgz",
...@@ -8900,6 +9093,25 @@ ...@@ -8900,6 +9093,25 @@
} }
} }
}, },
"node_modules/vite-plugin-mkcert": {
"version": "1.17.6",
"resolved": "https://registry.npmjs.org/vite-plugin-mkcert/-/vite-plugin-mkcert-1.17.6.tgz",
"integrity": "sha512-4JR1RN0HEg/w17eRQJ/Ve2pSa6KCVQcQO6yKtIaKQCFDyd63zGfXHWpygBkvvRSpqa0GcqNKf0fjUJ0HiJQXVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@octokit/rest": "^20.1.1",
"axios": "^1.7.4",
"debug": "^4.3.6",
"picocolors": "^1.0.1"
},
"engines": {
"node": ">=v16.7.0"
},
"peerDependencies": {
"vite": ">=3"
}
},
"node_modules/vm-browserify": { "node_modules/vm-browserify": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
......
...@@ -59,6 +59,7 @@ ...@@ -59,6 +59,7 @@
"typescript": "~5.4.5", "typescript": "~5.4.5",
"unplugin-auto-import": "^0.17.5", "unplugin-auto-import": "^0.17.5",
"vite": "^5.2.10", "vite": "^5.2.10",
"vite-plugin-mkcert": "^1.17.6",
"vue-tsc": "^1.8.27" "vue-tsc": "^1.8.27"
} }
} }
<script setup lang="ts">
interface Props {
data: any
}
defineProps<Props>()
</script>
<template>
<div class="material-preview">
<template v-if="data.type == 1">
<!-- 文本 -->
<el-input type="textarea" :model-value="data.content"></el-input>
</template>
<template v-if="['2', '6', '7', '8'].includes(data.type)">
<!-- 图片|二维码|小程序|卡券 -->
<img :src="data.content" />
</template>
<template v-if="data.type == 3">
<!-- 语音 -->
<div>
<audio :src="data.content" controls v-if="data.content"></audio>
</div>
</template>
<template v-if="data.type == 4">
<!-- 视频 -->
<video controls :src="data.content" style="width: 100%" v-if="data.content"></video>
</template>
<template v-if="data.type == 5">
<el-input :model-value="data.content" placeholder="请输入">
<template #prepend>https://</template>
<template #append v-if="data.content">
<a :href="data.content" target="_blank">查看</a>
</template>
</el-input>
</template>
</div>
</template>
<style lang="scss">
.material-preview {
width: 100%;
margin-top: 10px;
* {
max-width: 100%;
}
}
</style>
...@@ -112,7 +112,7 @@ function updateNode() { ...@@ -112,7 +112,7 @@ function updateNode() {
</el-dialog> </el-dialog>
</template> </template>
<style lang="scss"> <style lang="scss" scoped>
.el-card { .el-card {
.el-form-item:last-child { .el-form-item:last-child {
margin-bottom: 0; margin-bottom: 0;
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import ConfigTemplate from '../../ConfigTemplate.vue' import ConfigTemplate from '../../ConfigTemplate.vue'
import { useMaterial, useConnection } from '../../../composables/useAllData' import { useMaterial, useConnection } from '../../../composables/useAllData'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
const MaterialPreview = defineAsyncComponent(() => import('@/components/MaterialPreview.vue'))
const props = defineProps<{ node: any }>() const props = defineProps<{ node: any }>()
...@@ -27,6 +28,7 @@ watchEffect(() => { ...@@ -27,6 +28,7 @@ watchEffect(() => {
}) })
const { connectionList } = useConnection(2) const { connectionList } = useConnection(2)
const material = computed(() => materialList.value.find(item => item.id === form.material_id))
</script> </script>
<template> <template>
...@@ -60,6 +62,7 @@ const { connectionList } = useConnection(2) ...@@ -60,6 +62,7 @@ const { connectionList } = useConnection(2)
<el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%"> <el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%">
<el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option> <el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select> </el-select>
<MaterialPreview :data="material" v-if="material"></MaterialPreview>
</el-form-item> </el-form-item>
</template> </template>
</template> </template>
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import ConfigTemplate from '../../ConfigTemplate.vue' import ConfigTemplate from '../../ConfigTemplate.vue'
import { useMaterial, useConnection } from '../../../composables/useAllData' import { useMaterial, useConnection } from '../../../composables/useAllData'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
const MaterialPreview = defineAsyncComponent(() => import('@/components/MaterialPreview.vue'))
const props = defineProps<{ node: any }>() const props = defineProps<{ node: any }>()
...@@ -31,6 +32,8 @@ watchEffect(() => { ...@@ -31,6 +32,8 @@ watchEffect(() => {
}) })
const { connectionList } = useConnection(6) const { connectionList } = useConnection(6)
const material = computed(() => materialList.value.find(item => item.id === form.material_id))
</script> </script>
<template> <template>
...@@ -64,6 +67,7 @@ const { connectionList } = useConnection(6) ...@@ -64,6 +67,7 @@ const { connectionList } = useConnection(6)
<el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%"> <el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%">
<el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option> <el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select> </el-select>
<MaterialPreview :data="material" v-if="material"></MaterialPreview>
</el-form-item> </el-form-item>
</template> </template>
</template> </template>
......
...@@ -3,6 +3,8 @@ import ConfigTemplate from '../../ConfigTemplate.vue' ...@@ -3,6 +3,8 @@ import ConfigTemplate from '../../ConfigTemplate.vue'
import { useMaterial, useConnection } from '../../../composables/useAllData' import { useMaterial, useConnection } from '../../../composables/useAllData'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
const MaterialPreview = defineAsyncComponent(() => import('@/components/MaterialPreview.vue'))
const props = defineProps<{ node: any }>() const props = defineProps<{ node: any }>()
const role = inject('role') as string const role = inject('role') as string
...@@ -26,6 +28,8 @@ watchEffect(() => { ...@@ -26,6 +28,8 @@ watchEffect(() => {
materialType.value = form.material_type materialType.value = form.material_type
}) })
const { connectionList } = useConnection(9) const { connectionList } = useConnection(9)
const material = computed(() => materialList.value.find(item => item.id === form.material_id))
</script> </script>
<template> <template>
...@@ -59,6 +63,7 @@ const { connectionList } = useConnection(9) ...@@ -59,6 +63,7 @@ const { connectionList } = useConnection(9)
<el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%"> <el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%">
<el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option> <el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select> </el-select>
<MaterialPreview :data="material" v-if="material"></MaterialPreview>
</el-form-item> </el-form-item>
</template> </template>
</template> </template>
......
...@@ -3,6 +3,8 @@ import ConfigTemplate from '../../ConfigTemplate.vue' ...@@ -3,6 +3,8 @@ import ConfigTemplate from '../../ConfigTemplate.vue'
import { useMaterial, useConnection } from '../../../composables/useAllData' import { useMaterial, useConnection } from '../../../composables/useAllData'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
const MaterialPreview = defineAsyncComponent(() => import('@/components/MaterialPreview.vue'))
const props = defineProps<{ node: any }>() const props = defineProps<{ node: any }>()
const role = inject('role') as string const role = inject('role') as string
...@@ -24,6 +26,8 @@ watchEffect(() => { ...@@ -24,6 +26,8 @@ watchEffect(() => {
}) })
const { connectionList } = useConnection(1) const { connectionList } = useConnection(1)
const material = computed(() => materialList.value.find(item => item.id === form.material_id))
</script> </script>
<template> <template>
...@@ -41,6 +45,7 @@ const { connectionList } = useConnection(1) ...@@ -41,6 +45,7 @@ const { connectionList } = useConnection(1)
<el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%"> <el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%">
<el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option> <el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select> </el-select>
<MaterialPreview :data="material" v-if="material"></MaterialPreview>
</el-form-item> </el-form-item>
</template> </template>
<template v-else-if="step === 1"> <template v-else-if="step === 1">
......
<script setup lang="ts"> <script setup lang="ts">
import ConfigTemplate from '../../ConfigTemplate.vue' import ConfigTemplate from '../../ConfigTemplate.vue'
import { useConnection } from '../../../composables/useAllData' import { useConnection, useMaterial } from '../../../composables/useAllData'
const MaterialPreview = defineAsyncComponent(() => import('@/components/MaterialPreview.vue'))
const props = defineProps<{ node: any }>() const props = defineProps<{ node: any }>()
...@@ -9,7 +11,8 @@ const role = inject('role') as string ...@@ -9,7 +11,8 @@ const role = inject('role') as string
const form = reactive({ const form = reactive({
operate: '', operate: '',
connection_id: '', connection_id: '',
message: '' message: '',
material_id: ''
}) })
watchEffect(() => { watchEffect(() => {
Object.assign(form, props.node.data[role]) Object.assign(form, props.node.data[role])
...@@ -17,7 +20,17 @@ watchEffect(() => { ...@@ -17,7 +20,17 @@ watchEffect(() => {
const operateList = ref([{ label: '发送消息', value: '0' }]) const operateList = ref([{ label: '发送消息', value: '0' }])
const { materialList } = useMaterial('1')
const { connectionList } = useConnection(10) const { connectionList } = useConnection(10)
const material = computed(() => materialList.value.find(item => item.id === form.material_id))
watch(material, () => {
if (material.value) {
form.message = material.value.content
}
})
</script> </script>
<template> <template>
...@@ -40,9 +53,15 @@ const { connectionList } = useConnection(10) ...@@ -40,9 +53,15 @@ const { connectionList } = useConnection(10)
</el-form-item> </el-form-item>
</template> </template>
<template v-else-if="step === 2"> <template v-else-if="step === 2">
<el-form-item prop="message"> <el-form-item>
<el-input v-model="form.message" :rows="3" type="textarea" placeholder="请输入短信内容"></el-input> <el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%">
<el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select>
<MaterialPreview :data="material" v-if="material"></MaterialPreview>
</el-form-item> </el-form-item>
<!-- <el-form-item prop="message">
<el-input v-model="form.message" :rows="3" type="textarea" placeholder="请输入短信内容"></el-input>
</el-form-item> -->
</template> </template>
</template> </template>
</ConfigTemplate> </ConfigTemplate>
......
...@@ -3,6 +3,8 @@ import ConfigTemplate from '../../ConfigTemplate.vue' ...@@ -3,6 +3,8 @@ import ConfigTemplate from '../../ConfigTemplate.vue'
import { useMaterial, useConnection } from '../../../composables/useAllData' import { useMaterial, useConnection } from '../../../composables/useAllData'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
const MaterialPreview = defineAsyncComponent(() => import('@/components/MaterialPreview.vue'))
const props = defineProps<{ node: any }>() const props = defineProps<{ node: any }>()
const role = inject('role') as string const role = inject('role') as string
...@@ -30,6 +32,8 @@ watchEffect(() => { ...@@ -30,6 +32,8 @@ watchEffect(() => {
materialType.value = form.material_type materialType.value = form.material_type
}) })
const { connectionList } = useConnection(7) const { connectionList } = useConnection(7)
const material = computed(() => materialList.value.find(item => item.id === form.material_id))
</script> </script>
<template> <template>
...@@ -63,6 +67,7 @@ const { connectionList } = useConnection(7) ...@@ -63,6 +67,7 @@ const { connectionList } = useConnection(7)
<el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%"> <el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%">
<el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option> <el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select> </el-select>
<MaterialPreview :data="material" v-if="material"></MaterialPreview>
</el-form-item> </el-form-item>
</template> </template>
</template> </template>
......
...@@ -3,6 +3,8 @@ import ConfigTemplate from '../../ConfigTemplate.vue' ...@@ -3,6 +3,8 @@ import ConfigTemplate from '../../ConfigTemplate.vue'
import { useMaterial, useConnection } from '../../../composables/useAllData' import { useMaterial, useConnection } from '../../../composables/useAllData'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
const MaterialPreview = defineAsyncComponent(() => import('@/components/MaterialPreview.vue'))
const props = defineProps<{ node: any }>() const props = defineProps<{ node: any }>()
const role = inject('role') as string const role = inject('role') as string
...@@ -31,6 +33,8 @@ watchEffect(() => { ...@@ -31,6 +33,8 @@ watchEffect(() => {
}) })
const { connectionList } = useConnection(8) const { connectionList } = useConnection(8)
const material = computed(() => materialList.value.find(item => item.id === form.material_id))
</script> </script>
<template> <template>
...@@ -64,6 +68,7 @@ const { connectionList } = useConnection(8) ...@@ -64,6 +68,7 @@ const { connectionList } = useConnection(8)
<el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%"> <el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%">
<el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option> <el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select> </el-select>
<MaterialPreview :data="material" v-if="material"></MaterialPreview>
</el-form-item> </el-form-item>
</template> </template>
</template> </template>
......
...@@ -2,7 +2,13 @@ ...@@ -2,7 +2,13 @@
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
import { useConnection } from '../composables/useConnection' import { useConnection } from '../composables/useConnection'
import { useIndustry } from '../composables/useIndustry' import { useIndustry } from '../composables/useIndustry'
import { getNameByValue, materialMethodList, materialUsageList, materialUsersList, materialPictureStyleList } from '@/utils/dictionary' import {
getNameByValue,
materialMethodList,
materialUsageList,
materialUsersList,
materialPictureStyleList
} from '@/utils/dictionary'
import AppUpload from '@/components/base/AppUpload.vue' import AppUpload from '@/components/base/AppUpload.vue'
const props = defineProps(['data']) const props = defineProps(['data'])
...@@ -29,7 +35,9 @@ const typeName = computed(() => { ...@@ -29,7 +35,9 @@ const typeName = computed(() => {
<!-- 图片AI --> <!-- 图片AI -->
<el-form-item label="图片风格" prop="extend_info.picture_style"> <el-form-item label="图片风格" prop="extend_info.picture_style">
<el-radio-group :modelValue="data.extend_info.picture_style"> <el-radio-group :modelValue="data.extend_info.picture_style">
<el-radio v-for="item in materialPictureStyleList" :key="item.id" :value="item.value">{{ item.label }}</el-radio> <el-radio v-for="item in materialPictureStyleList" :key="item.id" :value="item.value">{{
item.label
}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="人物描述" prop="extend_info.person_des"> <el-form-item label="人物描述" prop="extend_info.person_des">
...@@ -64,7 +72,11 @@ const typeName = computed(() => { ...@@ -64,7 +72,11 @@ const typeName = computed(() => {
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="关键点" prop="key_points"> <el-form-item label="关键点" prop="key_points">
<el-input type="textarea" :rows="4" :model-value="data.key_points" placeholder="请输入内容的核心内容或者关键点,多个请使用英文“,”号进行隔离。" /> <el-input
type="textarea"
:rows="4"
:model-value="data.key_points"
placeholder="请输入内容的核心内容或者关键点,多个请使用英文“,”号进行隔离。" />
</el-form-item> </el-form-item>
</template> </template>
<el-form-item :label="`${typeName}资源`" prop="content"> <el-form-item :label="`${typeName}资源`" prop="content">
...@@ -95,8 +107,8 @@ const typeName = computed(() => { ...@@ -95,8 +107,8 @@ const typeName = computed(() => {
<a :href="data.content" target="_blank">查看</a> <a :href="data.content" target="_blank">查看</a>
</template> </template>
</el-input> </el-input>
</template></el-form-item </template>
> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<el-button type="primary" @click="$emit('update:modelValue')">关闭</el-button> <el-button type="primary" @click="$emit('update:modelValue')">关闭</el-button>
......
import fs from 'node:fs' // import fs from 'node:fs'
import path from 'node:path' // import path from 'node:path'
import { fileURLToPath, URL } from 'node:url' import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
...@@ -7,10 +7,12 @@ import vue from '@vitejs/plugin-vue' ...@@ -7,10 +7,12 @@ import vue from '@vitejs/plugin-vue'
// import checker from 'vite-plugin-checker' // import checker from 'vite-plugin-checker'
import AutoImport from 'unplugin-auto-import/vite' import AutoImport from 'unplugin-auto-import/vite'
import ReactivityTransform from '@vue-macros/reactivity-transform/vite' import ReactivityTransform from '@vue-macros/reactivity-transform/vite'
import mkcert from 'vite-plugin-mkcert'
export default defineConfig(({ mode }) => ({ export default defineConfig(({ mode }) => ({
base: mode === 'prod' ? 'https://webapp-pub.ezijing.com/website/prod/saas-dml/' : '/', base: mode === 'prod' ? 'https://webapp-pub.ezijing.com/website/prod/saas-dml/' : '/',
plugins: [ plugins: [
mkcert(),
vue(), vue(),
AutoImport({ AutoImport({
imports: ['vue', 'vue-router', '@vueuse/core'], imports: ['vue', 'vue-router', '@vueuse/core'],
...@@ -23,10 +25,10 @@ export default defineConfig(({ mode }) => ({ ...@@ -23,10 +25,10 @@ export default defineConfig(({ mode }) => ({
server: { server: {
open: true, open: true,
host: 'dev.ezijing.com', host: 'dev.ezijing.com',
https: { // https: {
key: fs.readFileSync(path.join(__dirname, './https/ezijing.com.key')), // key: fs.readFileSync(path.join(__dirname, './https/ezijing.com.key')),
cert: fs.readFileSync(path.join(__dirname, './https/ezijing.com.pem')) // cert: fs.readFileSync(path.join(__dirname, './https/ezijing.com.pem'))
}, // },
proxy: { proxy: {
// '/api/resource': { // '/api/resource': {
// target: 'http://com-resource-admin-test.ezijing.com/', // target: 'http://com-resource-admin-test.ezijing.com/',
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论