Merge branch 'dev' of http://git.sinoecare.com/sinoecare/digital_village_v2/dvcp_v2_webapp into dev
This commit is contained in:
@@ -26,7 +26,6 @@
|
|||||||
"print-js": "^1.0.63",
|
"print-js": "^1.0.63",
|
||||||
"serialize-javascript": "^6.0.0",
|
"serialize-javascript": "^6.0.0",
|
||||||
"sortablejs": "^1.12.0",
|
"sortablejs": "^1.12.0",
|
||||||
"spritejs": "^3.8.0",
|
|
||||||
"vue-draggable-resizable": "^2.3.0",
|
"vue-draggable-resizable": "^2.3.0",
|
||||||
"vue-json-editor": "^1.4.3",
|
"vue-json-editor": "^1.4.3",
|
||||||
"vue-okr-tree": "^1.0.10",
|
"vue-okr-tree": "^1.0.10",
|
||||||
|
|||||||
@@ -81,23 +81,6 @@
|
|||||||
<ai-info-item label="群发内容" :value="item.content" isLine v-if="item.contentType == 'text'"></ai-info-item>
|
<ai-info-item label="群发内容" :value="item.content" isLine v-if="item.contentType == 'text'"></ai-info-item>
|
||||||
</ai-wrapper>
|
</ai-wrapper>
|
||||||
|
|
||||||
<!-- <ai-wrapper v-for="item in data.fileList" :key="item.id">
|
|
||||||
<ai-info-item label="图片" isLine v-if="item.contentType == 'image'">
|
|
||||||
<ai-uploader v-model="images" :instance="instance" :limit="9" disabled/>
|
|
||||||
</ai-info-item>
|
|
||||||
</ai-wrapper>
|
|
||||||
|
|
||||||
<ai-wrapper v-for="item in data.fileList" :key="item.id">
|
|
||||||
<ai-info-item label="视频" isLine v-if="item.contentType == 'video'">
|
|
||||||
<video :src="item.accessUrl" style="width: 100%; height:100%; object-fit: fill;" muted controls="controls"></video>
|
|
||||||
</ai-info-item>
|
|
||||||
</ai-wrapper>
|
|
||||||
|
|
||||||
<ai-wrapper v-for="item in data.fileList" :key="item.id">
|
|
||||||
<ai-info-item label="附件" isLine v-if="item.contentType == 'file'">
|
|
||||||
<ai-file-list :fileList="fileDownLoad"></ai-file-list>
|
|
||||||
</ai-info-item>
|
|
||||||
</ai-wrapper> -->
|
|
||||||
<ai-wrapper>
|
<ai-wrapper>
|
||||||
<ai-info-item label="图片" isLine v-show="images.length">
|
<ai-info-item label="图片" isLine v-show="images.length">
|
||||||
<ai-uploader v-model="images" :instance="instance" :limit="9" disabled/>
|
<ai-uploader v-model="images" :instance="instance" :limit="9" disabled/>
|
||||||
@@ -210,8 +193,6 @@ export default {
|
|||||||
this.instance.post(`/app/pushmessage/detail?id=${this.$route.query.id}`).then(res => {
|
this.instance.post(`/app/pushmessage/detail?id=${this.$route.query.id}`).then(res => {
|
||||||
if (res?.data) {
|
if (res?.data) {
|
||||||
this.data = res.data
|
this.data = res.data
|
||||||
// this.images = [{url: res.data.fileList.filter(e => e.contentType == "image").map().accessUrl}]
|
|
||||||
// this.fileDownLoad = [{url: res.data.fileList.filter(e => e.contentType == "file")[0]?.accessUrl}]
|
|
||||||
this.images = res.data.fileList.filter(e => e.contentType == "image")?.map(i => {
|
this.images = res.data.fileList.filter(e => e.contentType == "image")?.map(i => {
|
||||||
return {
|
return {
|
||||||
url: i.accessUrl
|
url: i.accessUrl
|
||||||
@@ -274,7 +255,7 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
this.form.fileList = [...contentList, ...this.imgs, ...this.videos, ...this.files]
|
this.form.fileList = [...contentList, ...this.imgs, ...this.videos, ...this.files]
|
||||||
|
|
||||||
this.instance.post(`/app/pushmessage/addOrUpdate`, {
|
this.instance.post(`/app/pushmessage/addOrUpdate`, {
|
||||||
|
|||||||
53
project/dvui/components/AiSprite.vue
Normal file
53
project/dvui/components/AiSprite.vue
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<template>
|
||||||
|
<section class="AiSprite" :ref="ref"/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "AiSprite",
|
||||||
|
props: {
|
||||||
|
width: {default: 400},
|
||||||
|
height: {default: 300},
|
||||||
|
is3D: Boolean
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
ref: ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init(count = 0) {
|
||||||
|
const container = this.$refs[this.ref]
|
||||||
|
if (container) {
|
||||||
|
let {width, height} = this.$props
|
||||||
|
const scene = new spritejs.Scene({container, width, height, ...this.$attrs}),
|
||||||
|
layer = scene.layer()
|
||||||
|
/**
|
||||||
|
* layer 图层
|
||||||
|
* lib spritejs的依赖库
|
||||||
|
*/
|
||||||
|
this.$emit("init", {layer, lib: spritejs})
|
||||||
|
} else if (count == 20) {
|
||||||
|
console.log(this.$refs)
|
||||||
|
} else setTimeout(() => this.init(++count), 500)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.ref = "AiSprite_" + new Date().getTime()
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$injectLib("https://unpkg.com/spritejs/dist/spritejs.min.js", () => {
|
||||||
|
if (this.is3D) {
|
||||||
|
this.$injectLib("http://unpkg.com/sprite-extend-3d/dist/sprite-extend-3d.js", () => {
|
||||||
|
this.init()
|
||||||
|
})
|
||||||
|
} else this.init()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.AiSprite {
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="headerCenter">
|
<div class="headerCenter">
|
||||||
<div class="headerZone">
|
<div class="headerZone">
|
||||||
<div id="fly" class="fly"/>
|
<ai-sprite width="600" height="90" class="fly" @init="initFly"/>
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -57,13 +57,13 @@
|
|||||||
import {fullScreenContainer} from '@jiaminghi/data-view'
|
import {fullScreenContainer} from '@jiaminghi/data-view'
|
||||||
import Vue from "vue";
|
import Vue from "vue";
|
||||||
import RightTopBorder from "./rightTopBorder";
|
import RightTopBorder from "./rightTopBorder";
|
||||||
import {Arc, Scene} from 'spritejs'
|
import AiSprite from "../../components/AiSprite";
|
||||||
|
|
||||||
Vue.use(fullScreenContainer)
|
Vue.use(fullScreenContainer)
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "AiDvWrapper",
|
name: "AiDvWrapper",
|
||||||
components: {RightTopBorder},
|
components: {AiSprite, RightTopBorder},
|
||||||
model: {
|
model: {
|
||||||
prop: 'value',
|
prop: 'value',
|
||||||
event: 'change'
|
event: 'change'
|
||||||
@@ -124,45 +124,35 @@ export default {
|
|||||||
cfs.call(el)
|
cfs.call(el)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
initFly() {
|
initFly({layer, lib: {Arc}}) {
|
||||||
const rand = (min, max) => min + (max - min) * Math.random()
|
const rand = (min, max) => min + (max - min) * Math.random()
|
||||||
const initScene = (count = 0) => {
|
const startFly = (p) => {
|
||||||
const container = document.querySelector('#fly')
|
let scaleNum = rand(1, 3)
|
||||||
if (container) {
|
const pos = [rand(0, 600), 90 - rand(8, 50)]
|
||||||
const scene = new Scene({container, width: 600, height: 90}),
|
p.attr({
|
||||||
layer = scene.layer()
|
pos,
|
||||||
const startFly = (p) => {
|
scale: [scaleNum, scaleNum],
|
||||||
let scaleNum = rand(1, 3)
|
radius: 1,
|
||||||
const pos = [rand(0, 600), 90 - rand(8, 50)]
|
fillColor: '#0aa5ff',
|
||||||
p.attr({
|
filter: 'drop-shadow( 0, 2px, 2px, #0aa5ff)'
|
||||||
pos,
|
})
|
||||||
scale: [scaleNum, scaleNum],
|
p.animate([
|
||||||
radius: 1,
|
pos,
|
||||||
fillColor: '#0aa5ff',
|
{y: 0}
|
||||||
filter: 'drop-shadow( 0, 2px, 2px, #0aa5ff)'
|
], {
|
||||||
})
|
opacity: 0,
|
||||||
p.animate([
|
duration: rand(1, 1.5) * 1000,
|
||||||
pos,
|
iterations: Infinity,
|
||||||
{y: 0}
|
easing: 'ease-out'
|
||||||
], {
|
})
|
||||||
opacity: 0,
|
setTimeout(() => layer.append(p), rand(1, 5) * 1000)
|
||||||
duration: rand(1, 1.5) * 1000,
|
}
|
||||||
iterations: Infinity,
|
//初始化标题萤火效果
|
||||||
easing: 'ease-out'
|
let numP = 70;
|
||||||
})
|
for (let i = 0; i <= numP; i++) {
|
||||||
setTimeout(() => layer.append(p), rand(1, 5) * 1000)
|
const p = new Arc()
|
||||||
}
|
startFly(p)
|
||||||
//初始化标题萤火效果
|
|
||||||
let numP = 70;
|
|
||||||
for (let i = 0; i <= numP; i++) {
|
|
||||||
const p = new Arc()
|
|
||||||
startFly(p)
|
|
||||||
}
|
|
||||||
} else if (count == 20) {
|
|
||||||
|
|
||||||
} else setTimeout(() => initScene(++count), 500)
|
|
||||||
}
|
}
|
||||||
initScene()
|
|
||||||
},
|
},
|
||||||
handleSetting() {
|
handleSetting() {
|
||||||
if (this.setting.timer) clearInterval(this.setting.timer)
|
if (this.setting.timer) clearInterval(this.setting.timer)
|
||||||
@@ -184,9 +174,6 @@ export default {
|
|||||||
this.currentTime = this.$moment().format("YYYY/MM/DD HH:mm:ss")
|
this.currentTime = this.$moment().format("YYYY/MM/DD HH:mm:ss")
|
||||||
}, 1000)
|
}, 1000)
|
||||||
},
|
},
|
||||||
mounted() {
|
|
||||||
this.initFly()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -363,11 +350,6 @@ export default {
|
|||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
z-index: 3;
|
z-index: 3;
|
||||||
|
|
||||||
& > div {
|
|
||||||
width: 0;
|
|
||||||
box-shadow: 0 0 1px 1px #0aa5ff;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
size="small"
|
size="small"
|
||||||
unlink-panels
|
unlink-panels
|
||||||
placeholder="选择结束日期"
|
placeholder="选择结束日期"
|
||||||
|
:picker-options="{start: search.createTimeStart, minTime: search.createTimeStart}"
|
||||||
@change="search.current = 1, getList()" />
|
@change="search.current = 1, getList()" />
|
||||||
</template>
|
</template>
|
||||||
<template #right>
|
<template #right>
|
||||||
|
|||||||
@@ -122,7 +122,8 @@ export default {
|
|||||||
tableId: this.applyForm.tableId,
|
tableId: this.applyForm.tableId,
|
||||||
tableType: 2,
|
tableType: 2,
|
||||||
processAnnexDefs: this.annexs?.map(e => ({...e, mustFill: Number(e.mustFill)})),
|
processAnnexDefs: this.annexs?.map(e => ({...e, mustFill: Number(e.mustFill)})),
|
||||||
processNodeList: res.processNodeList
|
processNodeList: res.processNodeList,
|
||||||
|
processType: 0
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (res?.code == 0) {
|
if (res?.code == 0) {
|
||||||
this.$message.success("保存成功")
|
this.$message.success("保存成功")
|
||||||
|
|||||||
Reference in New Issue
Block a user