You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.5 KiB
104 lines
2.5 KiB
<template>
|
|
<view>
|
|
<!-- #ifdef H5 -->
|
|
<view
|
|
class="content"
|
|
id="project"
|
|
:data-did="task.detailId"
|
|
:data-param="param"
|
|
:data-pdu="task.planDuration"
|
|
:data-pid="projectId"
|
|
:data-pstart="task.planStart"
|
|
:data-rdu="task.realDuration"
|
|
:data-rid="roleId"
|
|
:data-tid="task.id"
|
|
:data-tname="task.name"
|
|
:data-token="token"
|
|
:data-rstart="task.realStart"
|
|
:data-uid="userId"
|
|
></view>
|
|
<!-- #endif -->
|
|
<!-- #ifdef APP-PLUS -->
|
|
<view
|
|
class="content"
|
|
id="project"
|
|
:data-did="task.detailId"
|
|
:data-param="param"
|
|
:data-pdu="task.planDuration"
|
|
:data-pid="projectId"
|
|
:data-pstart="task.planStart"
|
|
:data-rdu="task.realDuration"
|
|
:data-rid="roleId"
|
|
:data-tid="task.id"
|
|
:data-tname="task.name"
|
|
:data-token="token"
|
|
:data-rstart="task.realStart"
|
|
:data-uid="userId"
|
|
></view>
|
|
<!-- #endif -->
|
|
</view>
|
|
</template>
|
|
|
|
<script setup>
|
|
import { computed, defineProps } from 'vue';
|
|
import { useStore } from 'vuex';
|
|
|
|
defineProps({
|
|
task: { default: () => {}, type: Object },
|
|
pluginId: { default: '1', type: String },
|
|
styleType: { default: 0, type: Number },
|
|
pluginTaskId: { default: '', type: String },
|
|
param: { type: String, default: '' },
|
|
});
|
|
|
|
const store = useStore();
|
|
const roleId = computed(() => store.state.role.roleId);
|
|
const token = computed(() => store.state.user.token);
|
|
const userId = computed(() => store.getters['user/userId']);
|
|
const projectId = computed(() => store.getters['project/projectId']);
|
|
</script>
|
|
|
|
<script module="project" lang="renderjs">
|
|
export default {
|
|
data() {
|
|
return {
|
|
pluginContent: null,
|
|
pluginJs: null,
|
|
};
|
|
},
|
|
|
|
mounted() {
|
|
this.$nextTick(() => {
|
|
this.getPlugin();
|
|
});
|
|
},
|
|
|
|
methods: {
|
|
// 获取插件信息
|
|
async getPlugin() {
|
|
const params = { pluginId: this.pluginId, styleType: this.styleType };
|
|
this.$catchReq.getOtherPlugin(params, (err, res) => {
|
|
if (err) {
|
|
console.error('err: ', err);
|
|
} else {
|
|
if (!res || !res.id) return;
|
|
if (res.html && res.js) {
|
|
this.$nextTick(() => {
|
|
this.init(res);
|
|
});
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
init(res) {
|
|
const content = document.querySelector('.content');
|
|
content.innerHTML = res.html;
|
|
|
|
const script = document.createElement('script');
|
|
script.innerHTML = res.js;
|
|
document.body.appendChild(script);
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|