mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-22 17:26:46 +08:00
feat:修改投票
This commit is contained in:
@@ -11,7 +11,9 @@
|
|||||||
>
|
>
|
||||||
<div class="researchadd">
|
<div class="researchadd">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="headerTitle">{{ options.length ? "编辑投票题干" : "创建投票题干" }}</div>
|
<div class="headerTitle">
|
||||||
|
{{ options.length ? "编辑投票题干" : "创建投票题干" }}
|
||||||
|
</div>
|
||||||
<img
|
<img
|
||||||
style="width: 29px; height: 29px; cursor: pointer"
|
style="width: 29px; height: 29px; cursor: pointer"
|
||||||
src="../../assets/images/basicinfo/close.png"
|
src="../../assets/images/basicinfo/close.png"
|
||||||
@@ -35,7 +37,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-for="(item, index) in formData" :key="index + Math.random()">
|
<div v-for="(item, index) in formData" :key="index + Math.random()">
|
||||||
<VoteQuestion v-if="!item.deleted" :item="item" :index="index" @del="itemDel"/>
|
<VoteQuestion
|
||||||
|
v-if="!item.deleted"
|
||||||
|
:item="item"
|
||||||
|
:index="index"
|
||||||
|
@del="itemDel"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
@@ -43,11 +50,7 @@
|
|||||||
<a-button
|
<a-button
|
||||||
type="primary"
|
type="primary"
|
||||||
ghost
|
ghost
|
||||||
style="
|
style="width: 100px; height: 40px; border-radius: 8px"
|
||||||
width: 100px;
|
|
||||||
height: 40px;
|
|
||||||
border-radius: 8px;
|
|
||||||
"
|
|
||||||
@click="closeDrawer"
|
@click="closeDrawer"
|
||||||
>
|
>
|
||||||
取消
|
取消
|
||||||
@@ -76,57 +79,75 @@ import VoteQuestion from "./VoteQuestion.vue";
|
|||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
options: []
|
options: [],
|
||||||
})
|
});
|
||||||
|
|
||||||
const emit = defineEmits({})
|
const emit = defineEmits({});
|
||||||
const formData = ref(props.options && props.options.length ? [...props.options] : [{
|
const formData = ref(
|
||||||
voteStemName: '',
|
props.options && props.options.length
|
||||||
optionDetailList: []
|
? [...props.options]
|
||||||
}])
|
: [
|
||||||
|
{
|
||||||
|
voteStemName: "",
|
||||||
|
optionDetailList: [],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
const visible = ref(false)
|
const visible = ref(false);
|
||||||
|
|
||||||
watch(() => props.options.length, () => {
|
watch(
|
||||||
formData.value = props.options && props.options.length ? [...props.options] : [{
|
() => props.options.length,
|
||||||
voteStemName: '',
|
() => {
|
||||||
optionDetailList: []
|
formData.value =
|
||||||
}]
|
props.options && props.options.length
|
||||||
})
|
? [...props.options]
|
||||||
|
: [
|
||||||
|
{
|
||||||
|
voteStemName: "",
|
||||||
|
optionDetailList: [],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
function openDrawer() {
|
function openDrawer() {
|
||||||
visible.value = true
|
visible.value = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const closeDrawer = () => {
|
const closeDrawer = () => {
|
||||||
visible.value = false
|
visible.value = false;
|
||||||
formData.value = props.options && props.options.length ? [...props.options] : [{
|
formData.value =
|
||||||
voteStemName: '',
|
props.options && props.options.length
|
||||||
optionDetailList: []
|
? [...props.options]
|
||||||
}]
|
: [
|
||||||
|
{
|
||||||
|
voteStemName: "",
|
||||||
|
optionDetailList: [],
|
||||||
|
},
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
async function confirm() {
|
async function confirm() {
|
||||||
console.log(formData.value)
|
console.log(formData.value);
|
||||||
if (formData.value.some(t => !t.voteStemName && !t.deleted)) {
|
if (formData.value.some((t) => !t.voteStemName && !t.deleted)) {
|
||||||
message.warning('请输入题干名称')
|
message.warning("请输入题干名称");
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
visible.value = false
|
visible.value = false;
|
||||||
emit('update:options', formData.value)
|
emit("update:options", formData.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleAdd() {
|
function handleAdd() {
|
||||||
formData.value.push({
|
formData.value.push({
|
||||||
voteStemName: '',
|
voteStemName: "",
|
||||||
optionDetailList: []
|
optionDetailList: [],
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function itemDel(i) {
|
function itemDel(i) {
|
||||||
formData.value[i].deleted = true
|
formData.value[i].deleted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.researchadd {
|
.researchadd {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<div class="tagbox">
|
<div class="tagbox">
|
||||||
<div class="deleteop" @click="handleDel">
|
<div class="deleteop" @click="handleDel">
|
||||||
<div><img src="../../assets/images/projectadd/delete.png" /></div>
|
<div><img src="../../assets/images/projectadd/delete.png" /></div>
|
||||||
<div class="del_text">删除选项</div>
|
<div class="del_text">删除题干</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
@@ -23,8 +23,16 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-for="(item, index) in formData.optionDetailList" :key="index+Math.random()">
|
<div
|
||||||
<VoteQuestionItem v-if="!item.deleted" :item="item" :index="index" @del="delItem"/>
|
v-for="(item, index) in formData.optionDetailList"
|
||||||
|
:key="index + Math.random()"
|
||||||
|
>
|
||||||
|
<VoteQuestionItem
|
||||||
|
v-if="!item.deleted"
|
||||||
|
:item="item"
|
||||||
|
:index="index"
|
||||||
|
@del="delItem"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="in" style="margin-left: 85px; margin-bottom: 20px">
|
<div class="in" style="margin-left: 85px; margin-bottom: 20px">
|
||||||
@@ -50,29 +58,28 @@ import VoteQuestionItem from "./VoteQuestionItem.vue";
|
|||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
index: Number,
|
index: Number,
|
||||||
item: {}
|
item: {},
|
||||||
})
|
});
|
||||||
|
|
||||||
const emit = defineEmits(['del'])
|
const emit = defineEmits(["del"]);
|
||||||
|
|
||||||
const formData = ref(props.item)
|
const formData = ref(props.item);
|
||||||
|
|
||||||
watch(props, () => {
|
watch(props, () => {
|
||||||
formData.value = props.item
|
formData.value = props.item;
|
||||||
})
|
});
|
||||||
|
|
||||||
function handleSingleAdd() {
|
function handleSingleAdd() {
|
||||||
formData.value.optionDetailList.push({})
|
formData.value.optionDetailList.push({});
|
||||||
}
|
}
|
||||||
|
|
||||||
function delItem(i) {
|
function delItem(i) {
|
||||||
formData.value.optionDetailList[i].deleted = true
|
formData.value.optionDetailList[i].deleted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleDel() {
|
function handleDel() {
|
||||||
emit("del", props.index);
|
emit("del", props.index);
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.researchadd {
|
.researchadd {
|
||||||
|
|||||||
Reference in New Issue
Block a user