@billtaofbj/questionnaire 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t(require("vue"),require("@billtaofbj/core"),require("vue-router"),require("element-plus"),require("yjs"),require("@hocuspocus/provider"),require("@element-plus/icons-vue"),require("axios")):typeof define==`function`&&define.amd?define([`vue`,`@billtaofbj/core`,`vue-router`,`element-plus`,`yjs`,`@hocuspocus/provider`,`@element-plus/icons-vue`,`axios`],t):(e=typeof globalThis<`u`?globalThis:e||self,e.YourCompanyQuestionnaire=t(e.Vue,e._billtaofbj_core,e.VueRouter,e.ElementPlus,e.yjs,e._hocuspocus_provider,e.ElementPlusIconsVue,e.axios))})(this,function(e,t,n,r,i,a,o,s){var c=Object.create,l=Object.defineProperty,u=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,m=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=d(t),a=0,o=i.length,s;a<o;a++)s=i[a],!p.call(e,s)&&s!==n&&l(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=u(t,s))||r.enumerable});return e},h=(e,t,n)=>(n=e==null?{}:c(f(e)),m(t||!e||!e.__esModule?l(n,`default`,{value:e,enumerable:!0}):n,e));i=h(i),s=h(s,1);var g=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},_={class:`chat-header`},v={class:`chat-header-left`},y={class:`chat-title`},b={class:`online-users-list`},ee={class:`online-user-item`},x={class:`online-user-name`},S={key:1},C={class:`online-user-name`},w={class:`chat-header-right`},te={key:0,class:`chat-empty`},ne={class:`chat-empty-hint`},T={key:1},re={class:`message-content`},E={key:0,class:`message-meta`},ie={key:0,class:`message-mention`},ae=[`innerHTML`],oe={class:`message-time`},se={key:1,class:`chat-message chat-message-ai`},D={class:`message-avatar ai`},ce={class:`chat-input-area`},O={key:0,class:`mention-popup`},le=[`onClick`,`onMouseenter`],ue={key:1},de=g({__name:`AiChatPanel`,props:{visible:{type:Boolean,default:!1},messages:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},panelWidth:{type:Number,default:360},isCollab:{type:Boolean,default:!1},collabUsers:{type:Array,default:()=>[]},currentUser:{type:Object,default:()=>({id:``,name:``,color:``})},isOwner:{type:Boolean,default:!0},unreadMention:{type:Boolean,default:!1}},emits:[`send`,`close`,`clear`,`clear-unread`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.ref)(``),s=(0,e.ref)(null),c=(0,e.ref)(null),l=(0,e.ref)(!1),u=(0,e.ref)([]),d=(0,e.ref)(0),f=``,p=-1,m={id:`ai-assistant`,name:`AI助手`,color:`#409EFF`,isAi:!0},h=(0,e.computed)(()=>{let e=r.currentUser.id,t=new Set;return[m,...r.collabUsers.filter(n=>{let r=n.clientId||n.id||``;if(r&&r===e)return!1;let i=String(r||n.name||``);return t.has(i)?!1:(t.add(i),!0)})]}),g=(0,e.computed)(()=>h.value.length+1),de=e=>e.role===`ai`?`chat-message-ai`:r.isCollab&&e.user_id&&e.user_id!==r.currentUser.id?`chat-message-other`:`chat-message-user`,fe=e=>e.role===`ai`?{background:`linear-gradient(135deg, #409EFF, #337ECC)`}:{background:e.user_color||`#67C23A`},k=e=>(e.user_name||`U`).charAt(0),A=e=>{if(!r.isCollab)return;let t=typeof e==`string`?e:e.target?.value||a.value,n=t.length,i=t.lastIndexOf(`@`,n);if(i!==-1&&i<n){let e=t.slice(i+1,n);if(!e.includes(` `)&&!e.includes(`
2
- `)){f=e,p=i,u.value=h.value.filter(t=>t.name&&t.name.toLowerCase().includes(e.toLowerCase())),l.value=u.value.length>0,d.value=0;return}}l.value=!1},j=()=>{l.value&&(d.value=Math.min(d.value+1,u.value.length-1))},pe=()=>{l.value&&(d.value=Math.max(d.value-1,0))},M=e=>{let t=a.value.slice(0,p),n=a.value.slice(p+f.length+1);a.value=`${t}@${e.name} ${n}`,l.value=!1},N=e=>{if(e){if(e.shiftKey)return;if(l.value){let t=u.value[d.value];if(t){e.preventDefault(),M(t);return}}e.preventDefault()}let t=a.value.trim();if(!t||r.loading)return;let n=null;if(r.isCollab){let e=t.match(/@(\S+)/);e&&(n=e[1])}i(`send`,t,{mentionedUser:n}),a.value=``,l.value=!1},P=()=>{(0,e.nextTick)(()=>{s.value&&(s.value.scrollTop=s.value.scrollHeight)})};return(0,e.watch)(()=>r.messages.length,P),(0,e.watch)(()=>r.messages,P,{deep:!0}),(n,r)=>{let f=(0,e.resolveComponent)(`el-icon`),p=(0,e.resolveComponent)(`el-tag`),m=(0,e.resolveComponent)(`el-popover`),P=(0,e.resolveComponent)(`el-button`),F=(0,e.resolveComponent)(`el-input`);return t.visible?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`ai-chat-panel`,style:(0,e.normalizeStyle)({width:t.panelWidth+`px`})},[(0,e.createElementVNode)(`div`,_,[(0,e.createElementVNode)(`div`,v,[(0,e.createVNode)(f,{size:18,color:`#409EFF`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Monitor))]),_:1}),(0,e.createElementVNode)(`span`,y,(0,e.toDisplayString)(t.isCollab?`协作聊天`:`AI 助手`),1),t.isCollab?((0,e.openBlock)(),(0,e.createBlock)(m,{key:0,width:200,placement:`bottom-start`,trigger:`click`},{reference:(0,e.withCtx)(()=>[(0,e.createVNode)(p,{size:`small`,type:`success`,effect:`plain`,class:`online-tag`},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(g.value)+`人在线 `,1)]),_:1})]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,b,[(0,e.createElementVNode)(`div`,ee,[(0,e.createElementVNode)(`div`,{class:`online-user-avatar`,style:(0,e.normalizeStyle)({background:t.currentUser.color||`#409EFF`})},(0,e.toDisplayString)((t.currentUser.name||`U`).charAt(0)),5),(0,e.createElementVNode)(`span`,x,(0,e.toDisplayString)(t.currentUser.name||`我`),1),(0,e.createVNode)(p,{size:`small`,type:t.isOwner?`warning`:`success`,effect:`plain`,class:`role-tag`},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(t.isOwner?`发起人`:`协作人`),1)]),_:1},8,[`type`]),r[4]||=(0,e.createElementVNode)(`span`,{class:`self-tag`},`(我)`,-1)]),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(h.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id||t.clientId,class:`online-user-item`},[(0,e.createElementVNode)(`div`,{class:`online-user-avatar`,style:(0,e.normalizeStyle)({background:t.color||`#909399`})},[t.isAi?((0,e.openBlock)(),(0,e.createBlock)(f,{key:0,size:14},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Monitor))]),_:1})):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,S,(0,e.toDisplayString)((t.name||`U`).charAt(0)),1))],4),(0,e.createElementVNode)(`span`,C,(0,e.toDisplayString)(t.name||`未知用户`),1),t.isAi?((0,e.openBlock)(),(0,e.createBlock)(p,{key:0,size:`small`,type:`primary`,effect:`plain`,class:`role-tag`},{default:(0,e.withCtx)(()=>[...r[5]||=[(0,e.createTextVNode)(`AI助手`,-1)]]),_:1})):((0,e.openBlock)(),(0,e.createBlock)(p,{key:1,size:`small`,type:`success`,effect:`plain`,class:`role-tag`},{default:(0,e.withCtx)(()=>[...r[6]||=[(0,e.createTextVNode)(`协作人`,-1)]]),_:1}))]))),128))])]),_:1})):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,w,[t.isCollab&&t.unreadMention?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`mention-bell`,title:`有新消息`,onClick:r[0]||=e=>i(`clear-unread`)},[(0,e.createVNode)(f,{size:18,color:`#F56C6C`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Bell))]),_:1})])):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(P,{text:``,circle:``,size:`small`,onClick:r[1]||=e=>n.$emit(`clear`),title:`清空对话`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Delete))]),_:1})]),_:1}),(0,e.createVNode)(P,{text:``,circle:``,size:`small`,onClick:r[2]||=e=>n.$emit(`close`),title:`关闭`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Close))]),_:1})]),_:1})])]),(0,e.createElementVNode)(`div`,{class:`chat-messages`,ref_key:`messagesRef`,ref:s},[t.messages.length===0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,te,[(0,e.createVNode)(f,{size:40,color:`#c0c4cc`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Monitor))]),_:1}),(0,e.createElementVNode)(`p`,null,(0,e.toDisplayString)(t.isCollab?`协作聊天室`:`你好!我是 AI 助手`),1),(0,e.createElementVNode)(`p`,ne,(0,e.toDisplayString)(t.isCollab?`与团队成员和AI助手实时聊天`:`可以问我任何关于文档编辑的问题`),1)])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.messages,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:n._msgId||n.time+n.content,class:(0,e.normalizeClass)([`chat-message`,de(n)])},[(0,e.createElementVNode)(`div`,{class:`message-avatar`,style:(0,e.normalizeStyle)(fe(n))},[n.role===`ai`?((0,e.openBlock)(),(0,e.createBlock)(f,{key:0,size:16},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Monitor))]),_:1})):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,T,(0,e.toDisplayString)(k(n)),1))],4),(0,e.createElementVNode)(`div`,re,[t.isCollab&&n.role===`user`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,E,[(0,e.createElementVNode)(`span`,{class:`message-sender`,style:(0,e.normalizeStyle)({color:n.user_color||`#67C23A`})},(0,e.toDisplayString)(n.user_name||`用户`),5),n.mentioned_user?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,ie,`@`+(0,e.toDisplayString)(n.mentioned_user),1)):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:`message-text`,innerHTML:n.content},null,8,ae),(0,e.createElementVNode)(`div`,oe,(0,e.toDisplayString)(n.time),1)])],2))),128)),t.loading?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,se,[(0,e.createElementVNode)(`div`,D,[(0,e.createVNode)(f,{size:16},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Monitor))]),_:1})]),r[7]||=(0,e.createElementVNode)(`div`,{class:`message-content`},[(0,e.createElementVNode)(`div`,{class:`message-text typing-indicator`},[(0,e.createElementVNode)(`span`),(0,e.createElementVNode)(`span`),(0,e.createElementVNode)(`span`)])],-1)])):(0,e.createCommentVNode)(``,!0)],512),(0,e.createElementVNode)(`div`,ce,[(0,e.createElementVNode)(`div`,{class:`chat-input-wrapper`,ref_key:`inputWrapperRef`,ref:c},[(0,e.createVNode)(F,{modelValue:a.value,"onUpdate:modelValue":r[3]||=e=>a.value=e,type:`textarea`,autosize:{minRows:1,maxRows:4},placeholder:t.isCollab?`输入消息... @提及成员`:`输入消息...`,onKeydown:[(0,e.withKeys)((0,e.withModifiers)(N,[`exact`]),[`enter`]),(0,e.withKeys)((0,e.withModifiers)(j,[`prevent`]),[`down`]),(0,e.withKeys)((0,e.withModifiers)(pe,[`prevent`]),[`up`])],onInput:A,resize:`none`},null,8,[`modelValue`,`placeholder`,`onKeydown`]),l.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,O,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(u.value,(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id||t.clientId,class:(0,e.normalizeClass)([`mention-item`,{active:n===d.value}]),onClick:e=>M(t),onMouseenter:e=>d.value=n},[(0,e.createElementVNode)(`div`,{class:`mention-avatar`,style:(0,e.normalizeStyle)({background:t.color||`#909399`})},[t.isAi?((0,e.openBlock)(),(0,e.createBlock)(f,{key:0,size:12},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Monitor))]),_:1})):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,ue,(0,e.toDisplayString)((t.name||`U`).charAt(0)),1))],4),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.name),1)],42,le))),128))])):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(P,{class:`send-btn`,type:`primary`,circle:``,disabled:!a.value.trim()||t.loading,onClick:N},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Promotion))]),_:1})]),_:1},8,[`disabled`])],512)])],4)):(0,e.createCommentVNode)(``,!0)}}},[[`__scopeId`,`data-v-01960100`]]),fe=`/api/document-versions`,k=5e3,A=()=>{let t=(0,e.ref)([]),n=(0,e.ref)(!1);return{versions:t,loading:n,saveVersion:async({documentId:e,docType:t,content:n,userId:r,userName:i})=>{if(!e||!t||!n)return null;try{let{data:a}=await s.default.post(fe,{document_id:e,doc_type:t,content:typeof n==`string`?n:JSON.stringify(n),user_id:r||null,user_name:i||null},{timeout:k});return a}catch(e){return console.warn(`[useVersionHistory] Failed to save version:`,e),null}},loadVersions:async e=>{if(!e)return[];n.value=!0;try{let{data:n}=await s.default.get(fe,{params:{document_id:e},timeout:k});return t.value=n,n}catch(e){return console.warn(`[useVersionHistory] Failed to load versions:`,e),t.value=[],[]}finally{n.value=!1}},getVersionContent:async e=>{try{let{data:t}=await s.default.get(`${fe}/${e}`,{timeout:k});return t}catch(e){return console.warn(`[useVersionHistory] Failed to get version content:`,e),null}}}},j={class:`version-history-panel`},pe={key:0,class:`loading-state`},M={key:1,class:`empty-state`},N={key:2,class:`version-list`},P={key:0,class:`current-version`},F={class:`current-version-header`},I={class:`version-number`},L=[`onClick`],R={class:`version-number`},z={class:`version-user`},B={class:`panel-footer`},me=g({__name:`VersionHistoryPanel`,props:{modelValue:{type:Boolean,default:!1},documentId:{type:[Number,String],default:null}},emits:[`update:modelValue`,`apply`],setup(t,{expose:n,emit:i}){let a=t,s=i,{versions:c,loading:l,loadVersions:u,getVersionContent:d}=A(),f=(0,e.ref)(!1),p=(0,e.ref)(null),m=(0,e.ref)(!1),h=(0,e.ref)(null);(0,e.watch)(()=>a.modelValue,e=>{f.value=e,e&&a.documentId&&(p.value=null,u(a.documentId).then(e=>{e&&e.length>0&&(h.value=e[0])}))}),(0,e.watch)(f,e=>{s(`update:modelValue`,e)});let g=e=>{p.value=e},_=async()=>{if(p.value){m.value=!0;try{let e=await d(p.value.id);e&&e.content?(h.value=p.value,p.value=null,s(`apply`,e.content),r.ElMessage.success(`已切换到版本 v`+h.value.version_number)):r.ElMessage.error(`获取版本内容失败`)}finally{m.value=!1}}},v=()=>{f.value=!1},y=e=>{if(!e)return``;let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`};return n({currentVersion:h}),(t,n)=>{let r=(0,e.resolveComponent)(`el-icon`),i=(0,e.resolveComponent)(`el-tag`),a=(0,e.resolveComponent)(`el-timeline-item`),s=(0,e.resolveComponent)(`el-timeline`),u=(0,e.resolveComponent)(`el-button`),d=(0,e.resolveComponent)(`el-drawer`);return(0,e.openBlock)(),(0,e.createBlock)(d,{modelValue:f.value,"onUpdate:modelValue":n[0]||=e=>f.value=e,title:`更新履历`,direction:`rtl`,size:`420px`,"before-close":v},{footer:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,B,[(0,e.createVNode)(u,{type:`primary`,disabled:!p.value,loading:m.value,onClick:_},{default:(0,e.withCtx)(()=>[...n[4]||=[(0,e.createTextVNode)(` 切换到此版本 `,-1)]]),_:1},8,[`disabled`,`loading`])])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,j,[(0,e.unref)(l)?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,pe,[(0,e.createVNode)(r,{class:`is-loading`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Loading))]),_:1}),n[1]||=(0,e.createElementVNode)(`span`,null,`加载中...`,-1)])):(0,e.unref)(c).length===0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,M,[(0,e.createVNode)(r,{size:48,color:`#c0c4cc`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(o.Clock))]),_:1}),n[2]||=(0,e.createElementVNode)(`p`,null,`暂无历史版本`,-1)])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,N,[h.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,P,[(0,e.createElementVNode)(`div`,F,[(0,e.createVNode)(i,{type:`success`,size:`small`},{default:(0,e.withCtx)(()=>[...n[3]||=[(0,e.createTextVNode)(`当前版本`,-1)]]),_:1}),(0,e.createElementVNode)(`span`,I,`v`+(0,e.toDisplayString)(h.value.version_number),1)])])):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(s,null,{default:(0,e.withCtx)(()=>[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(c),t=>((0,e.openBlock)(),(0,e.createBlock)(a,{key:t.id,timestamp:y(t.created_at),placement:`top`,type:p.value?.id===t.id?`primary`:``,hollow:p.value?.id!==t.id},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`version-item`,{active:p.value?.id===t.id}]),onClick:e=>g(t)},[(0,e.createElementVNode)(`span`,R,`版本号:v`+(0,e.toDisplayString)(t.version_number),1),(0,e.createElementVNode)(`span`,z,`提交人:`+(0,e.toDisplayString)(t.user_name||`未知用户`),1)],10,L)]),_:2},1032,[`timestamp`,`type`,`hollow`]))),128))]),_:1})]))])]),_:1},8,[`modelValue`])}}},[[`__scopeId`,`data-v-87924b7c`]]);function he(){let t=(0,e.ref)([]),n=(0,e.ref)(!1),r=(0,e.ref)(!1),i=(0,e.ref)([]),a=(0,e.ref)({id:``,name:``,color:``}),o=(0,e.ref)(!1),c=null,l=null,u=null,d=new Set,f=`/api/chat`,p=null,m=({ydoc:n,provider:s,onlineUsers:l})=>{if(n){r.value=!0,u=l,p&&p(),p=(0,e.watch)(u,e=>{i.value=Array.isArray(e)?e:[]},{immediate:!0,deep:!0});try{c=n.getArray(`chat-messages`),c.observe(e=>{try{e.changes.added.forEach(e=>{e.content.getContent().forEach(e=>{e&&e._msgId&&!d.has(e._msgId)&&(d.add(e._msgId),t.value=[...t.value,e],e.mentioned_user&&e.user_id!==a.value.id&&(o.value=!0))})})}catch(e){console.warn(`[useChat] Y.Array observer error:`,e)}})}catch(e){console.warn(`[useChat] Failed to create Y.Array:`,e)}}},h=e=>{a.value={...a.value,...e}},g=e=>{i.value=e||[]},_=()=>{let e=new Date;return`${e.getHours().toString().padStart(2,`0`)}:${e.getMinutes().toString().padStart(2,`0`)}`},v=async(n,i={})=>{let o={_msgId:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,role:`user`,content:n,time:_(),user_id:a.value.id,user_name:a.value.name,user_color:a.value.color,mentioned_user:i.mentionedUser||null};if(d.add(o._msgId),t.value=[...t.value,o],c&&(0,e.unref)(r))try{c.push([o])}catch(e){console.warn(`[useChat] Failed to push to Y.Array:`,e)}if(i.roomId)try{await s.default.post(f,{room_id:i.roomId,role:`user`,content:n,user_id:a.value.id,user_name:a.value.name,mentioned_user:i.mentionedUser||null})}catch(e){console.warn(`[useChat] Failed to persist message:`,e)}},y=async(n,i)=>{let a={_msgId:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,role:`ai`,content:n,time:_(),user_id:`ai-assistant`,user_name:`AI助手`};if(d.add(a._msgId),t.value=[...t.value,a],c&&(0,e.unref)(r))try{c.push([a])}catch(e){console.warn(`[useChat] Failed to push AI message to Y.Array:`,e)}if(i)try{await s.default.post(f,{room_id:i,role:`ai`,content:n,user_id:`ai-assistant`,user_name:`AI助手`})}catch(e){console.warn(`[useChat] Failed to persist AI message:`,e)}},b=async e=>{if(e)try{let n=await s.default.get(f,{params:{room_id:e}});if(Array.isArray(n.data)){let e=n.data.map(e=>({_msgId:e._msgId||`hist-${e.id||Date.now()}`,role:e.role,content:e.content,time:e.time||_(),user_id:e.user_id||``,user_name:e.user_name||``,user_color:e.user_color||``,mentioned_user:e.mentioned_user||null}));e.forEach(e=>d.add(e._msgId)),t.value=[...e,...t.value]}}catch(e){console.warn(`[useChat] Failed to load history:`,e)}},ee=async e=>{if(t.value=[],d.clear(),e)try{await s.default.delete(f,{params:{room_id:e}})}catch(e){console.warn(`[useChat] Failed to clear messages on server:`,e)}},x=()=>{o.value=!1},S=()=>{if(p&&=(p(),null),c&&l){try{c.unobserve(l)}catch{}l=null}c=null,u=null,d.clear()};return(0,e.onUnmounted)(()=>S()),{messages:t,loading:n,isCollabMode:r,collabUsers:i,currentUser:a,unreadMention:o,setCollabContext:m,setCurrentUser:h,updateCollabUsers:g,sendMessage:v,sendAiMessage:y,loadHistory:b,clearMessages:ee,clearUnreadMention:x,destroy:S}}var ge={class:`q-editor`},_e={class:`editor-header`},ve={class:`header-left`},ye={class:`header-right`},be={class:`editor-main`},xe={class:`q-canvas`,ref:`canvasRef`},Se={class:`q-header-top`},Ce={class:`q-header-settings-panel`},we={class:`q-settings-section`},Te={class:`q-settings-row`},Ee={class:`q-settings-row`},De={class:`q-settings-row`},Oe={class:`q-settings-row`},ke={class:`q-settings-row`},Ae={class:`q-settings-row`},je={class:`q-settings-row`},Me={class:`q-settings-row`},Ne={class:`q-settings-row`},Pe={class:`q-settings-row`},Fe={class:`q-settings-row`},Ie={class:`q-settings-row`},Le={class:`q-settings-row`},Re={class:`q-settings-row`},ze={class:`q-header-settings`},Be={class:`q-pass-score`},Ve={class:`q-total-score`},He={class:`q-show-score`},Ue={class:`q-questions`,ref:`questionsRef`},We=[`onClick`,`onDragstart`,`onDragover`,`onDrop`],Ge={class:`q-card-toolbar`},Ke={class:`q-card-header`},qe={class:`q-num`},Je={class:`q-card-actions`},Ye={class:`q-card-body`},Xe={class:`q-desc-row`},Ze={class:`q-image-row`},Qe={key:0,class:`q-image-preview`},$e=[`src`],et={key:0,class:`q-options-area`},tt={key:1,class:`q-options-area`},nt={key:2,class:`q-options-area`},rt={key:3,class:`q-options-area`},it={key:4,class:`q-options-area`},at={class:`rating-config`},ot={class:`rating-preview`},st=[`onClick`],ct={key:5,class:`q-options-area`},lt={class:`scale-config`},ut={class:`scale-preview`},dt={class:`label`},ft={key:6,class:`q-options-area`},pt={class:`matrix-config`},mt={class:`matrix-rows`},ht={class:`matrix-cols`},gt={key:0,class:`matrix-preview`},_t={class:`matrix-table`},vt={key:7,class:`q-options-area`},yt={class:`q-skip-config`},bt={class:`skip-header`},xt={class:`skip-row`},St={key:0,class:`skip-rules`},Ct={class:`opt-name`},wt={class:`q-score-config`},Tt={class:`score-header`},Et={class:`score-row`},Dt={key:0,class:`score-options`},Ot={class:`opt-name`},kt={key:1,class:`score-row`},At={key:2,class:`score-row`},jt={class:`q-scoring-guide`},Mt={class:`scoring-guide-header`},Nt={class:`scoring-guide-item`},Pt={class:`scoring-guide-item`},Ft={key:0,class:`scoring-guide-error`},It={class:`q-add-bottom`},Lt={class:`q-add-trigger`},Rt={class:`ai-generate-content`},zt={class:`ai-gen-form-item`},Bt={class:`ai-gen-type`},Vt={class:`ai-gen-form-item`},Ht={class:`ai-gen-form-item`},Ut={class:`ai-analysis-content`},Wt={key:0,class:`ai-loading`},Gt={key:1,class:`ai-result`},Kt={class:`ai-result-header`},qt=[`innerHTML`],Jt={key:2,class:`ai-placeholder`},Yt={class:`distribute-content`},Xt={class:`distribute-input`},Zt={class:`distribute-actions`},Qt={key:0,class:`distribute-results`},$t={class:`results-header`},en=`questionnaire`,V=g({__name:`QuestionnaireEditor`,setup(t){let o=(0,n.useRoute)(),s=(0,n.useRouter)(),c=(0,e.ref)(`新建问卷`),l=(0,e.ref)(``),u=(0,e.ref)(``),d=(0,e.ref)(`draft`),f=(0,e.ref)(null),p=(0,e.ref)(null),m=(0,e.ref)([]),h=(0,e.ref)(0),g=(0,e.ref)(!1),_=(0,e.ref)(null),v=(0,e.ref)(!1),y=(0,e.ref)(null),b=(0,e.ref)(null),ee=(0,e.ref)(null);(0,e.ref)(!1);let x=(0,e.reactive)({backgroundColor:`#ffffff`,headerFont:`inherit`,headerFontSize:14,headerFontStyle:`normal`,headerColor:`#303133`,titleAlign:`center`,titleFont:`inherit`,titleFontStyle:`normal`,titleFontSize:20,titleColor:`#303133`,descAlign:`left`,descFont:`inherit`,descFontStyle:`normal`,descFontSize:14,descColor:`#606266`}),S=(0,e.ref)(!1),C=(0,e.ref)(``),w=(0,e.ref)([]),te=(0,e.ref)(!1),ne=(0,e.ref)(!1),T=(0,e.ref)(``),re=(0,e.ref)(!1),E=he(),ie=(0,e.ref)(!1),{saveVersion:ae}=A(),oe=(0,e.ref)(!1),se=(0,e.ref)(!1),D=(0,e.ref)(``),ce=(0,e.ref)([]),O=(0,e.ref)(-1),le=(0,e.ref)(``),ue=(0,e.ref)(null),fe=e=>({text:`文本题`,radio:`单选题`,checkbox:`多选题`,select:`下拉题`,rating:`评分题`,scale:`量表题`,matrix:`矩阵题`,image:`图片题`})[e]||e,k=(0,e.computed)(()=>m.value.reduce((e,t)=>e+(t.score||0),0)),j=0,pe=()=>{j=m.value.reduce((e,t)=>{let n=parseInt(t.id?.replace(`q-`,``)||`0`);return n>e?n:e},0)},M=(0,e.ref)(!1),N=(0,e.ref)(!1),P=(0,e.ref)(!1),F=(0,e.ref)([]),I=null,L=null,R=null,z=null,B=null,V=null,H=null,U=!1,W=!1,G=!1,tn=null,K=()=>JSON.stringify({title:c.value,description:l.value,questions:m.value.map(e=>{let{_preview:t,...n}=e;return n}),status:d.value}),nn=()=>{if(!b.value||L)return;I=new i.Doc,L=new a.HocuspocusProvider({url:`ws://${window.location.hostname||`localhost`}:1234`,name:`questionnaire-${b.value}`,document:I,connect:!1,reconnect:!1,onConnect:()=>{q()},onClose:()=>{},onSynced:({state:e})=>{U=!0,!R?.toString()&&!z?.toString()&&(!B?.toArray()||B.length===0)?ln():X(),H=K()}}),R=I.getText(`title`),z=I.getText(`description`),B=I.getArray(`questions`),V=I.getMap(`meta`);let e=I.getMap(`_meta`);e.observe(t=>{t.keysChanged.has(`_closed`)&&(P.value=e.get(`_closed`)===!0,P.value&&(M.value=!1,L?.disconnect(),r.ElMessage.warning(`协作已被创建者关闭`)))}),R.observe(()=>{U&&!W&&!G&&X()}),z.observe(()=>{U&&!W&&!G&&X()}),B.observe(()=>{U&&!W&&!G&&X()}),V.observe(()=>{U&&!W&&!G&&X()}),L.awareness.on(`change`,()=>{F.value=Array.from(L.awareness.getStates().entries()).filter(([e,t])=>t.user).map(([e,t])=>({clientId:e,...t.user}))})},q=()=>{J(),tn=setInterval(()=>{if(L?.connection?.ws?.readyState===WebSocket.CLOSED)try{L.connect()}catch{}},3e4)},J=()=>{tn&&=(clearInterval(tn),null)},rn=async()=>{if(!b.value&&(await Jn(),!b.value)){r.ElMessage.warning(`请先保存问卷后再开启协作`);return}if(L||nn(),L){P.value=!1,M.value=!0;try{await fetch(`/api/questionnaires/${b.value}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({collab_closed:!1})})}catch(e){console.warn(`Failed to reset collab_closed:`,e)}let e=`用户${Math.floor(Math.random()*1e3)}`,t=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,`0`)}`;L.awareness.setLocalStateField(`user`,{name:e,color:t}),E.setCollabContext({ydoc:I,provider:L,onlineUsers:F}),E.setCurrentUser({id:L.awareness.clientID,name:e,color:t}),L.connect(),setTimeout(()=>{U&&!R?.toString()&&!z?.toString()&&(!B?.toArray()||B.length===0)&&(ln(),H=K())},1e3),r.ElMessage.success(`协作已开启`)}},an=()=>{L&&(L.disconnect(),M.value=!1,r.ElMessage.info(`协作已关闭`))},on=async()=>{P.value=!0;let e=I?.getMap(`_meta`);if(e&&I.transact(()=>{e.set(`_closed`,!0)}),b.value)try{await fetch(`/api/questionnaires/${b.value}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({collab_closed:!0})})}catch(e){console.warn(`Failed to persist collab_closed:`,e)}an()},sn=()=>{M.value?on():rn()},cn=async()=>{if(b.value&&!N.value&&(L||nn(),L)){P.value=!1,M.value=!0,N.value=!0;try{await fetch(`/api/questionnaires/${b.value}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({collab_closed:!1})})}catch{}let e=`协作人${Math.floor(Math.random()*1e3)}`,t=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,`0`)}`;L.awareness.setLocalStateField(`user`,{name:e,color:t}),E.setCollabContext({ydoc:I,provider:L,onlineUsers:F}),E.setCurrentUser({id:L.awareness.clientID,name:e,color:t}),L.connect(),setTimeout(()=>{U&&(!R?.toString()&&!z?.toString()&&(!B?.toArray()||B.length===0)||(X(),H=K()))},1e3)}},ln=()=>{!I||!U||(G=!0,I.transact(()=>{R.toString()!==c.value&&(R.delete(0,R.length),R.insert(0,c.value)),z.toString()!==l.value&&(z.delete(0,z.length),z.insert(0,l.value));let e=m.value.map(e=>{let{_preview:t,...n}=e;return n});JSON.stringify(e)!==JSON.stringify(B.toArray())&&(B.delete(0,B.length),B.push(e)),V.set(`status`,d.value),V.set(`updatedAt`,new Date().toISOString())}),G=!1)},Y=()=>{if(!M.value)return;let e=K();e!==H&&(H=e,ln())},X=()=>{if(!I||!U||!R?.toString()&&!z?.toString()&&(!B?.toArray()||B.length===0))return;let e=JSON.stringify({title:R?.toString()||``,description:z?.toString()||``,questions:B?.toArray()||[],status:V?.get(`status`)||`draft`});if(e===H)return;H=e,W=!0;let t=R?.toString();t!==void 0&&(c.value=t);let n=z?.toString();n!==void 0&&(l.value=n);let r=B?.toArray();r&&(m.value=r.map(e=>({...e,_preview:0})),pe());let i=V?.get(`status`);i&&(d.value=i),W=!1},un=null,Z=()=>{W||(un&&clearTimeout(un),un=setTimeout(()=>{Y()},100))};(0,e.watch)(c,Z),(0,e.watch)(l,Z),(0,e.watch)(m,Z,{deep:!0});let dn=e=>{j++;let t={id:`q-${j}`,type:e,title:``,description:``,required:!1,image:``,skipTo:``,optionSkipTo:{},score:0,optionScore:{},referenceAnswer:``,scoringCriteria:``};return e===`text`?{...t,placeholder:``,textType:`single`}:e===`radio`||e===`checkbox`||e===`select`?{...t,options:[`选项1`,`选项2`],optionSkipTo:{0:``,1:``},optionScore:{0:0,1:0}}:e===`rating`?{...t,maxRating:5,ratingIcon:`star`,_preview:0,ratingAsScore:!0}:e===`scale`?{...t,scaleMinLabel:`非常不满意`,scaleMaxLabel:`非常满意`,scaleCount:7,scaleAsScore:!0}:e===`matrix`?{...t,matrixRows:[`行1`,`行2`],matrixCols:[`列1`,`列2`,`列3`]}:e===`image`?{...t,imageQuestionText:``}:t},Q=e=>{m.value.push(dn(e)),v.value=!1,M.value&&Y()},fn=e=>{r.ElMessageBox.confirm(`确定删除该题目?`,`提示`,{type:`warning`}).then(()=>{m.value.splice(e,1),M.value&&Y()}).catch(()=>{})},pn=(e,t)=>{let n=m.value,r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],M.value&&Y())},mn=e=>{let t=e.options.length;e.options.push(`选项${t+1}`),e.optionSkipTo||={},e.optionSkipTo[t]=``,e.optionScore||={},e.optionScore[t]=0,M.value&&Y()},hn=(e,t)=>{e.options.splice(t,1);let n={},r={};Object.entries(e.optionSkipTo||{}).forEach(([e,r])=>{let i=parseInt(e);i<t?n[i]=r:i>t&&(n[i-1]=r)}),Object.entries(e.optionScore||{}).forEach(([e,n])=>{let i=parseInt(e);i<t?r[i]=n:i>t&&(r[i-1]=n)}),e.optionSkipTo=n,e.optionScore=r,M.value&&Y()},gn=(e,t)=>{let n=new FileReader;return n.onload=t=>{e.image=t.target.result,M.value&&Y()},n.readAsDataURL(t),!1},_n=(e,t)=>{y.value=e,t.dataTransfer.effectAllowed=`move`},vn=(e,t)=>{t.dataTransfer.dropEffect=`move`},yn=(e,t)=>{if(t?.preventDefault(),y.value===null||y.value===e)return;let n=m.value,r=n.splice(y.value,1)[0];n.splice(e,0,r),y.value=null,M.value&&Y()},$=()=>JSON.stringify({title:c.value,description:l.value,author:u.value,status:d.value,beginTime:f.value,endTime:p.value,passScore:h.value,showScore:g.value,totalScore:k.value,questions:m.value.map(e=>{let{_preview:t,...n}=e;return n})}),bn=e=>{try{let t=JSON.parse(e);c.value=t.title||`新建问卷`,l.value=t.description||``,d.value=t.status||`draft`,f.value=t.beginTime?new Date(t.beginTime):null,p.value=t.endTime?new Date(t.endTime):null,h.value=t.passScore||0,g.value=t.showScore!==!1,m.value=(t.questions||[]).map(e=>(e._preview=0,e)),pe()}catch(e){console.error(`Failed to parse questionnaire config`,e)}},xn=()=>{let e=$(),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`${c.value||`问卷`}.json`,i.click(),URL.revokeObjectURL(n),r.ElMessage.success(`JSON已导出`)},Sn=()=>{ee.value?.click()},Cn=e=>{let t=e.target.files?.[0];if(!t)return;let n=new FileReader;n.onload=e=>{try{bn(e.target.result),r.ElMessage.success(`JSON导入成功`),M.value&&Y()}catch{r.ElMessage.error(`JSON格式错误`)}},n.readAsText(t),e.target.value=``},wn=async e=>{if(!b.value){r.ElMessage.warning(`请先保存问卷`);return}if(e===`standalone`){Tn();return}try{let t=await fetch(`/api/questionnaires/export/${b.value}/${e}`,{method:`POST`});if(!t.ok)throw Error(`导出失败`);let n=await t.blob(),i=e===`word`?`docx`:e,a=URL.createObjectURL(n),o=document.createElement(`a`);o.href=a,o.download=`${c.value}.${i}`,o.click(),URL.revokeObjectURL(a),r.ElMessage.success(`导出成功`)}catch(e){r.ElMessage.error(`导出失败: `+e.message)}},Tn=()=>{let e=JSON.parse($()),t=En(e),n=new Blob([t],{type:`text/html`}),i=URL.createObjectURL(n),a=document.createElement(`a`);a.href=i,a.download=`${e.title||`问卷`}.html`,a.click(),URL.revokeObjectURL(i),r.ElMessage.success(`独立HTML表单已导出`)},En=e=>{let t=`<div class="question" style="background:#f0f9ff; border-radius:6px; padding:16px; margin-bottom:16px;">
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t(require("vue"),require("@billtaofbj/core"),require("vue-router"),require("element-plus"),require("axios"),require("yjs"),require("@hocuspocus/provider"),require("@element-plus/icons-vue")):typeof define==`function`&&define.amd?define([`vue`,`@billtaofbj/core`,`vue-router`,`element-plus`,`axios`,`yjs`,`@hocuspocus/provider`,`@element-plus/icons-vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,e.YourCompanyQuestionnaire=t(e.Vue,e._billtaofbj_core,e.VueRouter,e.ElementPlus,e.axios,e.yjs,e._hocuspocus_provider,e.ElementPlusIconsVue))})(this,function(e,t,n,r,i,a,o,s){var c=Object.create,l=Object.defineProperty,u=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,m=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=d(t),a=0,o=i.length,s;a<o;a++)s=i[a],!p.call(e,s)&&s!==n&&l(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=u(t,s))||r.enumerable});return e},h=(e,t,n)=>(n=e==null?{}:c(f(e)),m(t||!e||!e.__esModule?l(n,`default`,{value:e,enumerable:!0}):n,e));let g=h(i,1);i=h(i),a=h(a),g.default.create({baseURL:`/api`,timeout:3e4});function _(e=`/api`){let t=g.default.create({baseURL:e,timeout:3e4});return{list:e=>t.get(`/documents/`,{params:e}),get:e=>t.get(`/documents/${e}`),create:e=>t.post(`/documents/`,e),update:(e,n)=>t.put(`/documents/${e}`,n),delete:e=>t.delete(`/documents/${e}`),addAttachment:(e,n)=>t.post(`/documents/${e}/attachments`,n),listAttachments:e=>t.get(`/documents/${e}/attachments`)}}function v(e=`/api`){let t=g.default.create({baseURL:e,timeout:3e4});return{get:e=>t.get(`/questionnaires/${e}`),create:e=>t.post(`/questionnaires/`,e),update:(e,n)=>t.put(`/questionnaires/${e}`,n)}}var ee=v(`/api`);_(`/api`);var y=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},b={class:`chat-header`},te={class:`chat-header-left`},x={class:`chat-title`},ne={class:`online-users-list`},S={class:`online-user-item`},C={class:`online-user-name`},w={key:1},re={class:`online-user-name`},T={class:`chat-header-right`},ie={key:0,class:`chat-empty`},E={class:`chat-empty-hint`},D={key:1},O={class:`message-content`},ae={key:0,class:`message-meta`},k={key:0,class:`message-mention`},oe=[`innerHTML`],A={class:`message-time`},se={key:1,class:`chat-message chat-message-ai`},ce={class:`message-avatar ai`},le={class:`chat-input-area`},ue={key:0,class:`mention-popup`},de=[`onClick`,`onMouseenter`],fe={key:1},pe=y({__name:`AiChatPanel`,props:{visible:{type:Boolean,default:!1},messages:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},panelWidth:{type:Number,default:360},isCollab:{type:Boolean,default:!1},collabUsers:{type:Array,default:()=>[]},currentUser:{type:Object,default:()=>({id:``,name:``,color:``})},isOwner:{type:Boolean,default:!0},unreadMention:{type:Boolean,default:!1}},emits:[`send`,`close`,`clear`,`clear-unread`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.ref)(``),o=(0,e.ref)(null),c=(0,e.ref)(null),l=(0,e.ref)(!1),u=(0,e.ref)([]),d=(0,e.ref)(0),f=``,p=-1,m={id:`ai-assistant`,name:`AI助手`,color:`#409EFF`,isAi:!0},h=(0,e.computed)(()=>{let e=r.currentUser.id,t=new Set;return[m,...r.collabUsers.filter(n=>{let r=n.clientId||n.id||``;if(r&&r===e)return!1;let i=String(r||n.name||``);return t.has(i)?!1:(t.add(i),!0)})]}),g=(0,e.computed)(()=>h.value.length+1),_=e=>e.role===`ai`?`chat-message-ai`:r.isCollab&&e.user_id&&e.user_id!==r.currentUser.id?`chat-message-other`:`chat-message-user`,v=e=>e.role===`ai`?{background:`linear-gradient(135deg, #409EFF, #337ECC)`}:{background:e.user_color||`#67C23A`},ee=e=>(e.user_name||`U`).charAt(0),y=e=>{if(!r.isCollab)return;let t=typeof e==`string`?e:e.target?.value||a.value,n=t.length,i=t.lastIndexOf(`@`,n);if(i!==-1&&i<n){let e=t.slice(i+1,n);if(!e.includes(` `)&&!e.includes(`
2
+ `)){f=e,p=i,u.value=h.value.filter(t=>t.name&&t.name.toLowerCase().includes(e.toLowerCase())),l.value=u.value.length>0,d.value=0;return}}l.value=!1},pe=()=>{l.value&&(d.value=Math.min(d.value+1,u.value.length-1))},j=()=>{l.value&&(d.value=Math.max(d.value-1,0))},M=e=>{let t=a.value.slice(0,p),n=a.value.slice(p+f.length+1);a.value=`${t}@${e.name} ${n}`,l.value=!1},me=e=>{if(e){if(e.shiftKey)return;if(l.value){let t=u.value[d.value];if(t){e.preventDefault(),M(t);return}}e.preventDefault()}let t=a.value.trim();if(!t||r.loading)return;let n=null;if(r.isCollab){let e=t.match(/@(\S+)/);e&&(n=e[1])}i(`send`,t,{mentionedUser:n}),a.value=``,l.value=!1},N=()=>{(0,e.nextTick)(()=>{o.value&&(o.value.scrollTop=o.value.scrollHeight)})};return(0,e.watch)(()=>r.messages.length,N),(0,e.watch)(()=>r.messages,N,{deep:!0}),(n,r)=>{let f=(0,e.resolveComponent)(`el-icon`),p=(0,e.resolveComponent)(`el-tag`),m=(0,e.resolveComponent)(`el-popover`),N=(0,e.resolveComponent)(`el-button`),he=(0,e.resolveComponent)(`el-input`);return t.visible?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`ai-chat-panel`,style:(0,e.normalizeStyle)({width:t.panelWidth+`px`})},[(0,e.createElementVNode)(`div`,b,[(0,e.createElementVNode)(`div`,te,[(0,e.createVNode)(f,{size:18,color:`#409EFF`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Monitor))]),_:1}),(0,e.createElementVNode)(`span`,x,(0,e.toDisplayString)(t.isCollab?`协作聊天`:`AI 助手`),1),t.isCollab?((0,e.openBlock)(),(0,e.createBlock)(m,{key:0,width:200,placement:`bottom-start`,trigger:`click`},{reference:(0,e.withCtx)(()=>[(0,e.createVNode)(p,{size:`small`,type:`success`,effect:`plain`,class:`online-tag`},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(g.value)+`人在线 `,1)]),_:1})]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,ne,[(0,e.createElementVNode)(`div`,S,[(0,e.createElementVNode)(`div`,{class:`online-user-avatar`,style:(0,e.normalizeStyle)({background:t.currentUser.color||`#409EFF`})},(0,e.toDisplayString)((t.currentUser.name||`U`).charAt(0)),5),(0,e.createElementVNode)(`span`,C,(0,e.toDisplayString)(t.currentUser.name||`我`),1),(0,e.createVNode)(p,{size:`small`,type:t.isOwner?`warning`:`success`,effect:`plain`,class:`role-tag`},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(t.isOwner?`发起人`:`协作人`),1)]),_:1},8,[`type`]),r[4]||=(0,e.createElementVNode)(`span`,{class:`self-tag`},`(我)`,-1)]),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(h.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id||t.clientId,class:`online-user-item`},[(0,e.createElementVNode)(`div`,{class:`online-user-avatar`,style:(0,e.normalizeStyle)({background:t.color||`#909399`})},[t.isAi?((0,e.openBlock)(),(0,e.createBlock)(f,{key:0,size:14},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Monitor))]),_:1})):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,w,(0,e.toDisplayString)((t.name||`U`).charAt(0)),1))],4),(0,e.createElementVNode)(`span`,re,(0,e.toDisplayString)(t.name||`未知用户`),1),t.isAi?((0,e.openBlock)(),(0,e.createBlock)(p,{key:0,size:`small`,type:`primary`,effect:`plain`,class:`role-tag`},{default:(0,e.withCtx)(()=>[...r[5]||=[(0,e.createTextVNode)(`AI助手`,-1)]]),_:1})):((0,e.openBlock)(),(0,e.createBlock)(p,{key:1,size:`small`,type:`success`,effect:`plain`,class:`role-tag`},{default:(0,e.withCtx)(()=>[...r[6]||=[(0,e.createTextVNode)(`协作人`,-1)]]),_:1}))]))),128))])]),_:1})):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,T,[t.isCollab&&t.unreadMention?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`mention-bell`,title:`有新消息`,onClick:r[0]||=e=>i(`clear-unread`)},[(0,e.createVNode)(f,{size:18,color:`#F56C6C`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Bell))]),_:1})])):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(N,{text:``,circle:``,size:`small`,onClick:r[1]||=e=>n.$emit(`clear`),title:`清空对话`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Delete))]),_:1})]),_:1}),(0,e.createVNode)(N,{text:``,circle:``,size:`small`,onClick:r[2]||=e=>n.$emit(`close`),title:`关闭`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Close))]),_:1})]),_:1})])]),(0,e.createElementVNode)(`div`,{class:`chat-messages`,ref_key:`messagesRef`,ref:o},[t.messages.length===0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ie,[(0,e.createVNode)(f,{size:40,color:`#c0c4cc`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Monitor))]),_:1}),(0,e.createElementVNode)(`p`,null,(0,e.toDisplayString)(t.isCollab?`协作聊天室`:`你好!我是 AI 助手`),1),(0,e.createElementVNode)(`p`,E,(0,e.toDisplayString)(t.isCollab?`与团队成员和AI助手实时聊天`:`可以问我任何关于文档编辑的问题`),1)])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.messages,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:n._msgId||n.time+n.content,class:(0,e.normalizeClass)([`chat-message`,_(n)])},[(0,e.createElementVNode)(`div`,{class:`message-avatar`,style:(0,e.normalizeStyle)(v(n))},[n.role===`ai`?((0,e.openBlock)(),(0,e.createBlock)(f,{key:0,size:16},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Monitor))]),_:1})):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,D,(0,e.toDisplayString)(ee(n)),1))],4),(0,e.createElementVNode)(`div`,O,[t.isCollab&&n.role===`user`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ae,[(0,e.createElementVNode)(`span`,{class:`message-sender`,style:(0,e.normalizeStyle)({color:n.user_color||`#67C23A`})},(0,e.toDisplayString)(n.user_name||`用户`),5),n.mentioned_user?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,k,`@`+(0,e.toDisplayString)(n.mentioned_user),1)):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:`message-text`,innerHTML:n.content},null,8,oe),(0,e.createElementVNode)(`div`,A,(0,e.toDisplayString)(n.time),1)])],2))),128)),t.loading?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,se,[(0,e.createElementVNode)(`div`,ce,[(0,e.createVNode)(f,{size:16},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Monitor))]),_:1})]),r[7]||=(0,e.createElementVNode)(`div`,{class:`message-content`},[(0,e.createElementVNode)(`div`,{class:`message-text typing-indicator`},[(0,e.createElementVNode)(`span`),(0,e.createElementVNode)(`span`),(0,e.createElementVNode)(`span`)])],-1)])):(0,e.createCommentVNode)(``,!0)],512),(0,e.createElementVNode)(`div`,le,[(0,e.createElementVNode)(`div`,{class:`chat-input-wrapper`,ref_key:`inputWrapperRef`,ref:c},[(0,e.createVNode)(he,{modelValue:a.value,"onUpdate:modelValue":r[3]||=e=>a.value=e,type:`textarea`,autosize:{minRows:1,maxRows:4},placeholder:t.isCollab?`输入消息... @提及成员`:`输入消息...`,onKeydown:[(0,e.withKeys)((0,e.withModifiers)(me,[`exact`]),[`enter`]),(0,e.withKeys)((0,e.withModifiers)(pe,[`prevent`]),[`down`]),(0,e.withKeys)((0,e.withModifiers)(j,[`prevent`]),[`up`])],onInput:y,resize:`none`},null,8,[`modelValue`,`placeholder`,`onKeydown`]),l.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ue,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(u.value,(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id||t.clientId,class:(0,e.normalizeClass)([`mention-item`,{active:n===d.value}]),onClick:e=>M(t),onMouseenter:e=>d.value=n},[(0,e.createElementVNode)(`div`,{class:`mention-avatar`,style:(0,e.normalizeStyle)({background:t.color||`#909399`})},[t.isAi?((0,e.openBlock)(),(0,e.createBlock)(f,{key:0,size:12},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Monitor))]),_:1})):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,fe,(0,e.toDisplayString)((t.name||`U`).charAt(0)),1))],4),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.name),1)],42,de))),128))])):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(N,{class:`send-btn`,type:`primary`,circle:``,disabled:!a.value.trim()||t.loading,onClick:me},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Promotion))]),_:1})]),_:1},8,[`disabled`])],512)])],4)):(0,e.createCommentVNode)(``,!0)}}},[[`__scopeId`,`data-v-01960100`]]),j=`/api/document-versions`,M=5e3,me=()=>{let t=(0,e.ref)([]),n=(0,e.ref)(!1);return{versions:t,loading:n,saveVersion:async({documentId:e,docType:t,content:n,userId:r,userName:i})=>{if(!e||!t||!n)return null;try{let{data:a}=await g.default.post(j,{document_id:e,doc_type:t,content:typeof n==`string`?n:JSON.stringify(n),user_id:r||null,user_name:i||null},{timeout:M});return a}catch(e){return console.warn(`[useVersionHistory] Failed to save version:`,e),null}},loadVersions:async e=>{if(!e)return[];n.value=!0;try{let{data:n}=await g.default.get(j,{params:{document_id:e},timeout:M});return t.value=n,n}catch(e){return console.warn(`[useVersionHistory] Failed to load versions:`,e),t.value=[],[]}finally{n.value=!1}},getVersionContent:async e=>{try{let{data:t}=await g.default.get(`${j}/${e}`,{timeout:M});return t}catch(e){return console.warn(`[useVersionHistory] Failed to get version content:`,e),null}}}},N={class:`version-history-panel`},he={key:0,class:`loading-state`},ge={key:1,class:`empty-state`},_e={key:2,class:`version-list`},P={key:0,class:`current-version`},ve={class:`current-version-header`},F={class:`version-number`},I=[`onClick`],L={class:`version-number`},R={class:`version-user`},z={class:`panel-footer`},ye=y({__name:`VersionHistoryPanel`,props:{modelValue:{type:Boolean,default:!1},documentId:{type:[Number,String],default:null}},emits:[`update:modelValue`,`apply`],setup(t,{expose:n,emit:i}){let a=t,o=i,{versions:c,loading:l,loadVersions:u,getVersionContent:d}=me(),f=(0,e.ref)(!1),p=(0,e.ref)(null),m=(0,e.ref)(!1),h=(0,e.ref)(null);(0,e.watch)(()=>a.modelValue,e=>{f.value=e,e&&a.documentId&&(p.value=null,u(a.documentId).then(e=>{e&&e.length>0&&(h.value=e[0])}))}),(0,e.watch)(f,e=>{o(`update:modelValue`,e)});let g=e=>{p.value=e},_=async()=>{if(p.value){m.value=!0;try{let e=await d(p.value.id);e&&e.content?(h.value=p.value,p.value=null,o(`apply`,e.content),r.ElMessage.success(`已切换到版本 v`+h.value.version_number)):r.ElMessage.error(`获取版本内容失败`)}finally{m.value=!1}}},v=()=>{f.value=!1},ee=e=>{if(!e)return``;let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`};return n({currentVersion:h}),(t,n)=>{let r=(0,e.resolveComponent)(`el-icon`),i=(0,e.resolveComponent)(`el-tag`),a=(0,e.resolveComponent)(`el-timeline-item`),o=(0,e.resolveComponent)(`el-timeline`),u=(0,e.resolveComponent)(`el-button`),d=(0,e.resolveComponent)(`el-drawer`);return(0,e.openBlock)(),(0,e.createBlock)(d,{modelValue:f.value,"onUpdate:modelValue":n[0]||=e=>f.value=e,title:`更新履历`,direction:`rtl`,size:`420px`,"before-close":v},{footer:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,z,[(0,e.createVNode)(u,{type:`primary`,disabled:!p.value,loading:m.value,onClick:_},{default:(0,e.withCtx)(()=>[...n[4]||=[(0,e.createTextVNode)(` 切换到此版本 `,-1)]]),_:1},8,[`disabled`,`loading`])])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,N,[(0,e.unref)(l)?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,he,[(0,e.createVNode)(r,{class:`is-loading`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Loading))]),_:1}),n[1]||=(0,e.createElementVNode)(`span`,null,`加载中...`,-1)])):(0,e.unref)(c).length===0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ge,[(0,e.createVNode)(r,{size:48,color:`#c0c4cc`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(s.Clock))]),_:1}),n[2]||=(0,e.createElementVNode)(`p`,null,`暂无历史版本`,-1)])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,_e,[h.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,P,[(0,e.createElementVNode)(`div`,ve,[(0,e.createVNode)(i,{type:`success`,size:`small`},{default:(0,e.withCtx)(()=>[...n[3]||=[(0,e.createTextVNode)(`当前版本`,-1)]]),_:1}),(0,e.createElementVNode)(`span`,F,`v`+(0,e.toDisplayString)(h.value.version_number),1)])])):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(o,null,{default:(0,e.withCtx)(()=>[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(c),t=>((0,e.openBlock)(),(0,e.createBlock)(a,{key:t.id,timestamp:ee(t.created_at),placement:`top`,type:p.value?.id===t.id?`primary`:``,hollow:p.value?.id!==t.id},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`version-item`,{active:p.value?.id===t.id}]),onClick:e=>g(t)},[(0,e.createElementVNode)(`span`,L,`版本号:v`+(0,e.toDisplayString)(t.version_number),1),(0,e.createElementVNode)(`span`,R,`提交人:`+(0,e.toDisplayString)(t.user_name||`未知用户`),1)],10,I)]),_:2},1032,[`timestamp`,`type`,`hollow`]))),128))]),_:1})]))])]),_:1},8,[`modelValue`])}}},[[`__scopeId`,`data-v-87924b7c`]]);function be(){let t=(0,e.ref)([]),n=(0,e.ref)(!1),r=(0,e.ref)(!1),i=(0,e.ref)([]),a=(0,e.ref)({id:``,name:``,color:``}),o=(0,e.ref)(!1),s=null,c=null,l=null,u=new Set,d=`/api/chat`,f=null,p=({ydoc:n,provider:c,onlineUsers:d})=>{if(n){r.value=!0,l=d,f&&f(),f=(0,e.watch)(l,e=>{i.value=Array.isArray(e)?e:[]},{immediate:!0,deep:!0});try{s=n.getArray(`chat-messages`),s.observe(e=>{try{e.changes.added.forEach(e=>{e.content.getContent().forEach(e=>{e&&e._msgId&&!u.has(e._msgId)&&(u.add(e._msgId),t.value=[...t.value,e],e.mentioned_user&&e.user_id!==a.value.id&&(o.value=!0))})})}catch(e){console.warn(`[useChat] Y.Array observer error:`,e)}})}catch(e){console.warn(`[useChat] Failed to create Y.Array:`,e)}}},m=e=>{a.value={...a.value,...e}},h=e=>{i.value=e||[]},_=()=>{let e=new Date;return`${e.getHours().toString().padStart(2,`0`)}:${e.getMinutes().toString().padStart(2,`0`)}`},v=async(n,i={})=>{let o={_msgId:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,role:`user`,content:n,time:_(),user_id:a.value.id,user_name:a.value.name,user_color:a.value.color,mentioned_user:i.mentionedUser||null};if(u.add(o._msgId),t.value=[...t.value,o],s&&(0,e.unref)(r))try{s.push([o])}catch(e){console.warn(`[useChat] Failed to push to Y.Array:`,e)}if(i.roomId)try{await g.default.post(d,{room_id:i.roomId,role:`user`,content:n,user_id:a.value.id,user_name:a.value.name,mentioned_user:i.mentionedUser||null})}catch(e){console.warn(`[useChat] Failed to persist message:`,e)}},ee=async(n,i)=>{let a={_msgId:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,role:`ai`,content:n,time:_(),user_id:`ai-assistant`,user_name:`AI助手`};if(u.add(a._msgId),t.value=[...t.value,a],s&&(0,e.unref)(r))try{s.push([a])}catch(e){console.warn(`[useChat] Failed to push AI message to Y.Array:`,e)}if(i)try{await g.default.post(d,{room_id:i,role:`ai`,content:n,user_id:`ai-assistant`,user_name:`AI助手`})}catch(e){console.warn(`[useChat] Failed to persist AI message:`,e)}},y=async e=>{if(e)try{let n=await g.default.get(d,{params:{room_id:e}});if(Array.isArray(n.data)){let e=n.data.map(e=>({_msgId:e._msgId||`hist-${e.id||Date.now()}`,role:e.role,content:e.content,time:e.time||_(),user_id:e.user_id||``,user_name:e.user_name||``,user_color:e.user_color||``,mentioned_user:e.mentioned_user||null}));e.forEach(e=>u.add(e._msgId)),t.value=[...e,...t.value]}}catch(e){console.warn(`[useChat] Failed to load history:`,e)}},b=async e=>{if(t.value=[],u.clear(),e)try{await g.default.delete(d,{params:{room_id:e}})}catch(e){console.warn(`[useChat] Failed to clear messages on server:`,e)}},te=()=>{o.value=!1},x=()=>{if(f&&=(f(),null),s&&c){try{s.unobserve(c)}catch{}c=null}s=null,l=null,u.clear()};return(0,e.onUnmounted)(()=>x()),{messages:t,loading:n,isCollabMode:r,collabUsers:i,currentUser:a,unreadMention:o,setCollabContext:p,setCurrentUser:m,updateCollabUsers:h,sendMessage:v,sendAiMessage:ee,loadHistory:y,clearMessages:b,clearUnreadMention:te,destroy:x}}var B=[`我可以帮您优化流程图布局、检查节点逻辑,或者提供流程设计建议。请问有什么需要帮助的?`,`这个流程图的节点连接看起来很清晰。建议检查一下是否有遗漏的分支或异常处理路径。`,`根据当前的流程结构,我建议在关键决策节点后添加明确的条件标注,使流程更易理解。`,`流程图中的泳道划分很合理。如果需要,我可以帮您分析各角色的职责分配是否均衡。`,`我可以帮您检查流程中是否存在循环依赖或死锁风险。需要我逐条分析吗?`,`建议在流程开始和结束节点使用统一的样式,这样可以让读者更快识别流程的起止点。`,`这个执行图的逻辑链路比较长,建议在中间添加一些检查点节点,便于流程监控和调试。`,`我可以帮您生成流程图的文字说明文档,方便团队成员理解流程细节。`];function V(){return B[Math.floor(Math.random()*B.length)]}async function H(e,t,n){let r={"Content-Type":`application/json`};e.apiKey&&(r.Authorization=`Bearer ${e.apiKey}`);let i=await fetch(e.url,{method:`POST`,headers:r,body:JSON.stringify({model:e.model||`gpt-4o-mini`,messages:t,temperature:e.temperature??.7,max_tokens:e.maxTokens??4096}),signal:n});if(!i.ok){let e=await i.text().catch(()=>``);throw Error(`AI API error ${i.status}: ${e}`)}return(await i.json()).choices?.[0]?.message?.content||``}function xe(t){let n=(0,e.ref)(!1),r=null,i=()=>{let e=typeof t==`function`?t():t;return!!(e&&e.url)},a=()=>typeof t==`function`?t():t||{};return{loading:n,isAvailable:i,chat:async(e,t=[])=>{let i=a();if(!i.url)return V();n.value=!0,r&&r.abort(),r=new AbortController;try{return await H(i,[{role:`system`,content:i.chatPrompt||`你是一个有帮助的AI助手,擅长文档编辑和流程设计。请简洁回答用户问题。`},...t.map(e=>({role:e.role===`ai`?`assistant`:`user`,content:e.content})),{role:`user`,content:e}],r.signal)}catch(e){return e.name===`AbortError`?``:(console.warn(`[useAiApi] Chat error, falling back to mock:`,e),V())}finally{n.value=!1}},generate:async(e,t)=>{let i=a();if(!i.url)return{success:!1,message:`AI生成功能开发中,敬请期待...`};n.value=!0,r&&r.abort(),r=new AbortController;try{let n=await H(i,[{role:`system`,content:i.generatePrompt||`你是一个专业的${t||`流程图`}生成助手。根据用户的描述,生成对应的JSON数据结构。只返回JSON,不要包含其他文字或markdown代码块标记。`},{role:`user`,content:e}],r.signal),a=null;try{let e=n.replace(/^```(?:json)?\s*/i,``).replace(/\s*```$/i,``).trim();a=JSON.parse(e)}catch{a=null}return{success:!0,content:n,parsed:a}}catch(e){return e.name===`AbortError`?{success:!1,message:`已取消`}:(console.warn(`[useAiApi] Generate error:`,e),{success:!1,message:`AI生成失败: ${e.message}`})}finally{n.value=!1}},abort:()=>{r&&=(r.abort(),null)}}}var Se={class:`q-editor`},Ce={class:`editor-header`},we={class:`header-left`},Te={class:`header-right`},Ee={class:`editor-main`},De={class:`q-canvas`,ref:`canvasRef`},Oe={class:`q-header-top`},ke={class:`q-header-settings-panel`},Ae={class:`q-settings-section`},je={class:`q-settings-row`},Me={class:`q-settings-row`},Ne={class:`q-settings-row`},Pe={class:`q-settings-row`},Fe={class:`q-settings-row`},Ie={class:`q-settings-row`},Le={class:`q-settings-row`},Re={class:`q-settings-row`},ze={class:`q-settings-row`},Be={class:`q-settings-row`},Ve={class:`q-settings-row`},He={class:`q-settings-row`},Ue={class:`q-settings-row`},We={class:`q-settings-row`},Ge={class:`q-header-settings`},Ke={class:`q-pass-score`},qe={class:`q-total-score`},Je={class:`q-show-score`},Ye={class:`q-questions`,ref:`questionsRef`},Xe=[`onClick`,`onDragstart`,`onDragover`,`onDrop`],Ze={class:`q-card-toolbar`},Qe={class:`q-card-header`},$e={class:`q-num`},et={class:`q-card-actions`},tt={class:`q-card-body`},nt={class:`q-desc-row`},rt={class:`q-image-row`},it={key:0,class:`q-image-preview`},at=[`src`],ot={key:0,class:`q-options-area`},st={key:1,class:`q-options-area`},ct={key:2,class:`q-options-area`},lt={key:3,class:`q-options-area`},ut={key:4,class:`q-options-area`},dt={class:`rating-config`},ft={class:`rating-preview`},pt=[`onClick`],mt={key:5,class:`q-options-area`},ht={class:`scale-config`},gt={class:`scale-preview`},_t={class:`label`},vt={key:6,class:`q-options-area`},yt={class:`matrix-config`},bt={class:`matrix-rows`},xt={class:`matrix-cols`},St={key:0,class:`matrix-preview`},Ct={class:`matrix-table`},wt={key:7,class:`q-options-area`},Tt={class:`q-skip-config`},Et={class:`skip-header`},Dt={class:`skip-row`},Ot={key:0,class:`skip-rules`},kt={class:`opt-name`},At={class:`q-score-config`},jt={class:`score-header`},Mt={class:`score-row`},Nt={key:0,class:`score-options`},Pt={class:`opt-name`},Ft={key:1,class:`score-row`},It={key:2,class:`score-row`},Lt={class:`q-scoring-guide`},Rt={class:`scoring-guide-header`},zt={class:`scoring-guide-item`},Bt={class:`scoring-guide-item`},Vt={key:0,class:`scoring-guide-error`},Ht={class:`q-add-bottom`},Ut={class:`q-add-trigger`},Wt={class:`ai-generate-content`},Gt={class:`ai-gen-form-item`},Kt={class:`ai-gen-type`},qt={class:`ai-gen-form-item`},Jt={class:`ai-gen-form-item`},Yt={class:`ai-analysis-content`},Xt={key:0,class:`ai-loading`},Zt={key:1,class:`ai-result`},Qt={class:`ai-result-header`},$t=[`innerHTML`],en={key:2,class:`ai-placeholder`},tn={class:`distribute-content`},nn={class:`distribute-input`},rn={class:`distribute-actions`},an={key:0,class:`distribute-results`},on={class:`results-header`},sn=`questionnaire`,U=y({__name:`QuestionnaireEditor`,props:{docId:{type:[Number,String],default:null},apiBase:{type:String,default:`/api`},saveApi:{type:[String,Function],default:null},loadApi:{type:[String,Function],default:null},wsUrl:{type:String,default:``},user:{type:Object,default:null},uiConfig:{type:Object,default:()=>({})},aiApi:{type:[String,Object],default:null}},setup(t){let s=(0,n.useRoute)(),c=(0,n.useRouter)(),l=t,u=(0,e.computed)(()=>({backButton:`show`,titleEditable:!0,authorEditable:!0,...l.uiConfig})),d=(0,e.computed)(()=>l.docId??s.params.id),f=(0,e.computed)(()=>l.apiBase&&l.apiBase!==`/api`?v(l.apiBase):ee),p=(0,e.ref)(`新建问卷`),m=(0,e.ref)(``),h=(0,e.ref)(l.user?.name||``),g=(0,e.ref)(`draft`),_=(0,e.ref)(null),y=(0,e.ref)(null),b=(0,e.ref)([]),te=(0,e.ref)(0),x=(0,e.ref)(!1),ne=(0,e.ref)(null),S=(0,e.ref)(!1),C=(0,e.ref)(null),w=(0,e.ref)(null),re=(0,e.ref)(null);(0,e.ref)(!1);let T=(0,e.reactive)({backgroundColor:`#ffffff`,headerFont:`inherit`,headerFontSize:14,headerFontStyle:`normal`,headerColor:`#303133`,titleAlign:`center`,titleFont:`inherit`,titleFontStyle:`normal`,titleFontSize:20,titleColor:`#303133`,descAlign:`left`,descFont:`inherit`,descFontStyle:`normal`,descFontSize:14,descColor:`#606266`}),ie=(0,e.ref)(!1),E=(0,e.ref)(``),D=(0,e.ref)([]),O=(0,e.ref)(!1),ae=(0,e.ref)(!1),k=(0,e.ref)(``),oe=(0,e.ref)(!1),A=be(),se=xe(()=>l.aiApi),ce=(0,e.ref)(!1),{saveVersion:le}=me(),ue=(0,e.ref)(!1),de=(0,e.ref)(!1),fe=(0,e.ref)(``),j=(0,e.ref)([]),M=(0,e.ref)(-1),N=(0,e.ref)(``),he=(0,e.ref)(null),ge=e=>({text:`文本题`,radio:`单选题`,checkbox:`多选题`,select:`下拉题`,rating:`评分题`,scale:`量表题`,matrix:`矩阵题`,image:`图片题`})[e]||e,_e=(0,e.computed)(()=>b.value.reduce((e,t)=>e+(t.score||0),0)),P=0,ve=()=>{P=b.value.reduce((e,t)=>{let n=parseInt(t.id?.replace(`q-`,``)||`0`);return n>e?n:e},0)},F=(0,e.ref)(!1),I=(0,e.ref)(!1),L=(0,e.ref)(!1),R=(0,e.ref)([]),z=null,B=null,V=null,H=null,U=null,W=null,G=null,K=!1,q=!1,J=!1,cn=null,ln=()=>JSON.stringify({title:p.value,description:m.value,questions:b.value.map(e=>{let{_preview:t,...n}=e;return n}),status:g.value}),un=()=>{if(!w.value||B)return;z=new a.Doc,B=new o.HocuspocusProvider({url:l.wsUrl||`ws://${window.location.hostname||`localhost`}:1234`,name:`questionnaire-${w.value}`,document:z,connect:!1,reconnect:!1,onConnect:()=>{dn()},onClose:()=>{},onSynced:({state:e})=>{K=!0,!V?.toString()&&!H?.toString()&&(!U?.toArray()||U.length===0)?gn():Q(),G=ln()}}),V=z.getText(`title`),H=z.getText(`description`),U=z.getArray(`questions`),W=z.getMap(`meta`);let e=z.getMap(`_meta`);e.observe(t=>{t.keysChanged.has(`_closed`)&&(L.value=e.get(`_closed`)===!0,L.value&&(F.value=!1,B?.disconnect(),r.ElMessage.warning(`协作已被创建者关闭`)))}),V.observe(()=>{K&&!q&&!J&&Q()}),H.observe(()=>{K&&!q&&!J&&Q()}),U.observe(()=>{K&&!q&&!J&&Q()}),W.observe(()=>{K&&!q&&!J&&Q()}),B.awareness.on(`change`,()=>{R.value=Array.from(B.awareness.getStates().entries()).filter(([e,t])=>t.user).map(([e,t])=>({clientId:e,...t.user}))})},dn=()=>{fn(),cn=setInterval(()=>{if(B?.connection?.ws?.readyState===WebSocket.CLOSED)try{B.connect()}catch{}},3e4)},fn=()=>{cn&&=(clearInterval(cn),null)},Y=async()=>{if(!w.value&&(await rr(),!w.value)){r.ElMessage.warning(`请先保存问卷后再开启协作`);return}if(B||un(),B){L.value=!1,F.value=!0;try{await fetch(`/api/questionnaires/${w.value}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({collab_closed:!1})})}catch(e){console.warn(`Failed to reset collab_closed:`,e)}let e=`用户${Math.floor(Math.random()*1e3)}`,t=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,`0`)}`;B.awareness.setLocalStateField(`user`,{name:e,color:t}),A.setCollabContext({ydoc:z,provider:B,onlineUsers:R}),A.setCurrentUser({id:B.awareness.clientID,name:e,color:t}),B.connect(),setTimeout(()=>{K&&!V?.toString()&&!H?.toString()&&(!U?.toArray()||U.length===0)&&(gn(),G=ln())},1e3),r.ElMessage.success(`协作已开启`)}},pn=()=>{B&&(B.disconnect(),F.value=!1,r.ElMessage.info(`协作已关闭`))},X=async()=>{L.value=!0;let e=z?.getMap(`_meta`);if(e&&z.transact(()=>{e.set(`_closed`,!0)}),w.value)try{await fetch(`/api/questionnaires/${w.value}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({collab_closed:!0})})}catch(e){console.warn(`Failed to persist collab_closed:`,e)}pn()},mn=()=>{F.value?X():Y()},hn=async()=>{if(w.value&&!I.value&&(B||un(),B)){L.value=!1,F.value=!0,I.value=!0;try{await fetch(`/api/questionnaires/${w.value}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({collab_closed:!1})})}catch{}let e=`协作人${Math.floor(Math.random()*1e3)}`,t=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,`0`)}`;B.awareness.setLocalStateField(`user`,{name:e,color:t}),A.setCollabContext({ydoc:z,provider:B,onlineUsers:R}),A.setCurrentUser({id:B.awareness.clientID,name:e,color:t}),B.connect(),setTimeout(()=>{K&&(!V?.toString()&&!H?.toString()&&(!U?.toArray()||U.length===0)||(Q(),G=ln()))},1e3)}},gn=()=>{!z||!K||(J=!0,z.transact(()=>{V.toString()!==p.value&&(V.delete(0,V.length),V.insert(0,p.value)),H.toString()!==m.value&&(H.delete(0,H.length),H.insert(0,m.value));let e=b.value.map(e=>{let{_preview:t,...n}=e;return n});JSON.stringify(e)!==JSON.stringify(U.toArray())&&(U.delete(0,U.length),U.push(e)),W.set(`status`,g.value),W.set(`updatedAt`,new Date().toISOString())}),J=!1)},Z=()=>{if(!F.value)return;let e=ln();e!==G&&(G=e,gn())},Q=()=>{if(!z||!K||!V?.toString()&&!H?.toString()&&(!U?.toArray()||U.length===0))return;let e=JSON.stringify({title:V?.toString()||``,description:H?.toString()||``,questions:U?.toArray()||[],status:W?.get(`status`)||`draft`});if(e===G)return;G=e,q=!0;let t=V?.toString();t!==void 0&&(p.value=t);let n=H?.toString();n!==void 0&&(m.value=n);let r=U?.toArray();r&&(b.value=r.map(e=>({...e,_preview:0})),ve());let i=W?.get(`status`);i&&(g.value=i),q=!1},_n=null,vn=()=>{q||(_n&&clearTimeout(_n),_n=setTimeout(()=>{Z()},100))};(0,e.watch)(p,vn),(0,e.watch)(m,vn),(0,e.watch)(b,vn,{deep:!0});let yn=e=>{P++;let t={id:`q-${P}`,type:e,title:``,description:``,required:!1,image:``,skipTo:``,optionSkipTo:{},score:0,optionScore:{},referenceAnswer:``,scoringCriteria:``};return e===`text`?{...t,placeholder:``,textType:`single`}:e===`radio`||e===`checkbox`||e===`select`?{...t,options:[`选项1`,`选项2`],optionSkipTo:{0:``,1:``},optionScore:{0:0,1:0}}:e===`rating`?{...t,maxRating:5,ratingIcon:`star`,_preview:0,ratingAsScore:!0}:e===`scale`?{...t,scaleMinLabel:`非常不满意`,scaleMaxLabel:`非常满意`,scaleCount:7,scaleAsScore:!0}:e===`matrix`?{...t,matrixRows:[`行1`,`行2`],matrixCols:[`列1`,`列2`,`列3`]}:e===`image`?{...t,imageQuestionText:``}:t},$=e=>{b.value.push(yn(e)),S.value=!1,F.value&&Z()},bn=e=>{r.ElMessageBox.confirm(`确定删除该题目?`,`提示`,{type:`warning`}).then(()=>{b.value.splice(e,1),F.value&&Z()}).catch(()=>{})},xn=(e,t)=>{let n=b.value,r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],F.value&&Z())},Sn=e=>{let t=e.options.length;e.options.push(`选项${t+1}`),e.optionSkipTo||={},e.optionSkipTo[t]=``,e.optionScore||={},e.optionScore[t]=0,F.value&&Z()},Cn=(e,t)=>{e.options.splice(t,1);let n={},r={};Object.entries(e.optionSkipTo||{}).forEach(([e,r])=>{let i=parseInt(e);i<t?n[i]=r:i>t&&(n[i-1]=r)}),Object.entries(e.optionScore||{}).forEach(([e,n])=>{let i=parseInt(e);i<t?r[i]=n:i>t&&(r[i-1]=n)}),e.optionSkipTo=n,e.optionScore=r,F.value&&Z()},wn=(e,t)=>{let n=new FileReader;return n.onload=t=>{e.image=t.target.result,F.value&&Z()},n.readAsDataURL(t),!1},Tn=(e,t)=>{C.value=e,t.dataTransfer.effectAllowed=`move`},En=(e,t)=>{t.dataTransfer.dropEffect=`move`},Dn=(e,t)=>{if(t?.preventDefault(),C.value===null||C.value===e)return;let n=b.value,r=n.splice(C.value,1)[0];n.splice(e,0,r),C.value=null,F.value&&Z()},On=()=>JSON.stringify({title:p.value,description:m.value,author:h.value,status:g.value,beginTime:_.value,endTime:y.value,passScore:te.value,showScore:x.value,totalScore:_e.value,questions:b.value.map(e=>{let{_preview:t,...n}=e;return n})}),kn=e=>{try{let t=JSON.parse(e);p.value=t.title||`新建问卷`,m.value=t.description||``,g.value=t.status||`draft`,_.value=t.beginTime?new Date(t.beginTime):null,y.value=t.endTime?new Date(t.endTime):null,te.value=t.passScore||0,x.value=t.showScore!==!1,b.value=(t.questions||[]).map(e=>(e._preview=0,e)),ve()}catch(e){console.error(`Failed to parse questionnaire config`,e)}},An=()=>{let e=On(),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`${p.value||`问卷`}.json`,i.click(),URL.revokeObjectURL(n),r.ElMessage.success(`JSON已导出`)},jn=()=>{re.value?.click()},Mn=e=>{let t=e.target.files?.[0];if(!t)return;let n=new FileReader;n.onload=e=>{try{kn(e.target.result),r.ElMessage.success(`JSON导入成功`),F.value&&Z()}catch{r.ElMessage.error(`JSON格式错误`)}},n.readAsText(t),e.target.value=``},Nn=async e=>{if(!w.value){r.ElMessage.warning(`请先保存问卷`);return}if(e===`standalone`){Pn();return}try{let t=await fetch(`/api/questionnaires/export/${w.value}/${e}`,{method:`POST`});if(!t.ok)throw Error(`导出失败`);let n=await t.blob(),i=e===`word`?`docx`:e,a=URL.createObjectURL(n),o=document.createElement(`a`);o.href=a,o.download=`${p.value}.${i}`,o.click(),URL.revokeObjectURL(a),r.ElMessage.success(`导出成功`)}catch(e){r.ElMessage.error(`导出失败: `+e.message)}},Pn=()=>{let e=JSON.parse(On()),t=Fn(e),n=new Blob([t],{type:`text/html`}),i=URL.createObjectURL(n),a=document.createElement(`a`);a.href=i,a.download=`${e.title||`问卷`}.html`,a.click(),URL.revokeObjectURL(i),r.ElMessage.success(`独立HTML表单已导出`)},Fn=e=>{let t=`<div class="question" style="background:#f0f9ff; border-radius:6px; padding:16px; margin-bottom:16px;">
3
3
  <p class="q-title" style="color:#409eff;">您的邮箱 <span style="color:red">*</span></p>
4
4
  <p class="desc">请填写您的邮箱地址,用于追踪反馈来源</p>
5
5
  <div class="q-input"><input type="email" name="_email" required placeholder="请输入您的邮箱" /></div>
@@ -108,11 +108,11 @@ document.getElementById('qform').addEventListener('submit', function(e) {
108
108
  });
109
109
  <\/script>
110
110
  </body>
111
- </html>`},Dn=async()=>{if(!b.value)return;let e=`${window.location.origin}/questionnaire-editor/${b.value}?collab=1`;try{await navigator.clipboard.writeText(e),r.ElMessage.success(`协作编辑链接已复制到剪贴板,发送给他人即可共同编辑`)}catch{r.ElMessage.info(`协作编辑链接: ${e}`)}},On=async()=>{if(!b.value)return;let e=prompt(`请输入填写者邮箱(用于追踪反馈来源):`);if(e===null)return;let t=e?`?uid=${encodeURIComponent(e)}`:``,n=`${window.location.origin}/questionnaire-view/${b.value}${t}`;try{await navigator.clipboard.writeText(n),r.ElMessage.success(`填写链接已复制到剪贴板`)}catch{r.ElMessage.info(`填写链接: ${n}`)}},kn=e=>e.split(/[\n,;,;\s]+/).map(e=>e.trim().toLowerCase()).filter(e=>e&&e.includes(`@`)&&e.includes(`.`)),An=e=>{let t=new FileReader;return t.onload=e=>{try{let t=e.target.result.split(`
112
- `).filter(e=>e.trim()),n=[];if(t.forEach((e,t)=>{if(t===0&&e.includes(`email`))return;let r=(e.split(/[,\t]/)[0]||``).trim().toLowerCase();r&&r.includes(`@`)&&r.includes(`.`)&&n.push(r)}),n.length>0){let e=kn(C.value);C.value=[...new Set([...e,...n])].join(`
113
- `),r.ElMessage.success(`导入了 ${n.length} 个邮箱`)}else r.ElMessage.warning(`未找到有效邮箱`)}catch{r.ElMessage.error(`文件解析失败`)}},t.readAsText(e),!1},jn=()=>{let e=kn(C.value);if(e.length===0){r.ElMessage.warning(`请先输入至少一个邮箱`);return}if(!b.value){r.ElMessage.warning(`请先保存问卷`);return}w.value=e.map(e=>{let t=crypto.randomUUID().replace(/-/g,``).slice(0,16);return{email:e,url:`${window.location.origin}/questionnaire-view/${b.value}?uid=${encodeURIComponent(e)}&t=${t}`,token:t}}),r.ElMessage.success(`已生成 ${e.length} 条唯一链接`)},Mn=async e=>{try{await navigator.clipboard.writeText(e),r.ElMessage.success(`已复制`)}catch{r.ElMessage.info(e)}},Nn=()=>{if(w.value.length===0)return;let e=`邮箱,问卷链接,Token
114
- `+w.value.map(e=>`${e.email},${e.url},${e.token}`).join(`
115
- `),t=new Blob([e],{type:`text/csv;charset=utf-8`}),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`${c.value||`问卷`}_分发列表.csv`,i.click(),URL.revokeObjectURL(n),r.ElMessage.success(`已下载分发列表`)},Pn=()=>{b.value&&s.push(`/questionnaire-stats/${b.value}`)},Fn=()=>{b.value&&s.push(`/questionnaire-responses/${b.value}`)},In=e=>{O.value=e,le.value=m.value[e].type,D.value=``,ce.value=[],oe.value=!0},Ln=(e,t)=>{ce.value=t},Rn=async()=>{if(!D.value.trim()){r.ElMessage.warning(`请输入生成要求`);return}se.value=!0;try{await new Promise(e=>setTimeout(e,1500));let e=le.value,t=D.value,n=zn(e,t),i=m.value[O.value];i&&(i.title=n.title,i.referenceAnswer=n.referenceAnswer,i.scoringCriteria=n.scoringCriteria,n.options&&i.options&&(i.options=n.options),n.placeholder!==void 0&&(i.placeholder=n.placeholder),n.description&&(i.description=n.description)),oe.value=!1,r.ElMessage.success(`题目已生成`)}catch(e){r.ElMessage.error(`生成失败: `+e.message)}finally{se.value=!1}},zn=(e,t)=>{let n={text:{title:`请简述JavaScript中let和const的区别`,description:`考察ES6变量声明方式的理解`,placeholder:`请输入您的答案...`,referenceAnswer:`1. let声明的变量可以重新赋值,const声明的变量不能重新赋值
111
+ </html>`},In=async()=>{if(!w.value)return;let e=`${window.location.origin}/questionnaire-editor/${w.value}?collab=1`;try{await navigator.clipboard.writeText(e),r.ElMessage.success(`协作编辑链接已复制到剪贴板,发送给他人即可共同编辑`)}catch{r.ElMessage.info(`协作编辑链接: ${e}`)}},Ln=async()=>{if(!w.value)return;let e=prompt(`请输入填写者邮箱(用于追踪反馈来源):`);if(e===null)return;let t=e?`?uid=${encodeURIComponent(e)}`:``,n=`${window.location.origin}/questionnaire-view/${w.value}${t}`;try{await navigator.clipboard.writeText(n),r.ElMessage.success(`填写链接已复制到剪贴板`)}catch{r.ElMessage.info(`填写链接: ${n}`)}},Rn=e=>e.split(/[\n,;,;\s]+/).map(e=>e.trim().toLowerCase()).filter(e=>e&&e.includes(`@`)&&e.includes(`.`)),zn=e=>{let t=new FileReader;return t.onload=e=>{try{let t=e.target.result.split(`
112
+ `).filter(e=>e.trim()),n=[];if(t.forEach((e,t)=>{if(t===0&&e.includes(`email`))return;let r=(e.split(/[,\t]/)[0]||``).trim().toLowerCase();r&&r.includes(`@`)&&r.includes(`.`)&&n.push(r)}),n.length>0){let e=Rn(E.value);E.value=[...new Set([...e,...n])].join(`
113
+ `),r.ElMessage.success(`导入了 ${n.length} 个邮箱`)}else r.ElMessage.warning(`未找到有效邮箱`)}catch{r.ElMessage.error(`文件解析失败`)}},t.readAsText(e),!1},Bn=()=>{let e=Rn(E.value);if(e.length===0){r.ElMessage.warning(`请先输入至少一个邮箱`);return}if(!w.value){r.ElMessage.warning(`请先保存问卷`);return}D.value=e.map(e=>{let t=crypto.randomUUID().replace(/-/g,``).slice(0,16);return{email:e,url:`${window.location.origin}/questionnaire-view/${w.value}?uid=${encodeURIComponent(e)}&t=${t}`,token:t}}),r.ElMessage.success(`已生成 ${e.length} 条唯一链接`)},Vn=async e=>{try{await navigator.clipboard.writeText(e),r.ElMessage.success(`已复制`)}catch{r.ElMessage.info(e)}},Hn=()=>{if(D.value.length===0)return;let e=`邮箱,问卷链接,Token
114
+ `+D.value.map(e=>`${e.email},${e.url},${e.token}`).join(`
115
+ `),t=new Blob([e],{type:`text/csv;charset=utf-8`}),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`${p.value||`问卷`}_分发列表.csv`,i.click(),URL.revokeObjectURL(n),r.ElMessage.success(`已下载分发列表`)},Un=()=>{w.value&&c.push(`/questionnaire-stats/${w.value}`)},Wn=()=>{w.value&&c.push(`/questionnaire-responses/${w.value}`)},Gn=e=>{M.value=e,N.value=b.value[e].type,fe.value=``,j.value=[],ue.value=!0},Kn=(e,t)=>{j.value=t},qn=async()=>{if(!fe.value.trim()){r.ElMessage.warning(`请输入生成要求`);return}de.value=!0;try{await new Promise(e=>setTimeout(e,1500));let e=N.value,t=fe.value,n=Jn(e,t),i=b.value[M.value];i&&(i.title=n.title,i.referenceAnswer=n.referenceAnswer,i.scoringCriteria=n.scoringCriteria,n.options&&i.options&&(i.options=n.options),n.placeholder!==void 0&&(i.placeholder=n.placeholder),n.description&&(i.description=n.description)),ue.value=!1,r.ElMessage.success(`题目已生成`)}catch(e){r.ElMessage.error(`生成失败: `+e.message)}finally{de.value=!1}},Jn=(e,t)=>{let n={text:{title:`请简述JavaScript中let和const的区别`,description:`考察ES6变量声明方式的理解`,placeholder:`请输入您的答案...`,referenceAnswer:`1. let声明的变量可以重新赋值,const声明的变量不能重新赋值
116
116
  2. let和const都有块级作用域,var没有
117
117
  3. const声明时必须初始化,let不需要
118
118
  4. 两者都存在暂时性死区(TDZ)`,scoringCriteria:`评分标准:
@@ -163,7 +163,7 @@ reactive用于创建响应式的复杂对象。ref用于创建响应式的基本
163
163
  - 准确识别问题(25%)
164
164
  - 描述详细准确(25%)
165
165
  - 原因分析合理(25%)
166
- - 方案可行有效(25%)`}};return n[e]||n.text},Bn=()=>{te.value=!0,T.value=``},Vn=async()=>{ne.value=!0,T.value=``;try{let e=await fetch(`/api/questionnaires/responses/${b.value}`);if(!e.ok)throw Error(`获取回答数据失败`);let t=await e.json(),n={questionnaire:{id:b.value,title:c.value,description:l.value,questions:m.value.map(e=>({id:e.id,title:e.title,type:e.type,options:e.options||[],required:e.required}))},responses:t.responses||[],totalResponses:t.total||0};await new Promise(e=>setTimeout(e,2e3)),T.value=Hn(n)}catch(e){r.ElMessage.error(`分析失败: `+e.message)}finally{ne.value=!1}},Hn=e=>{let{questionnaire:t,responses:n,totalResponses:r}=e,i=t.questions.map(e=>{let t=n.map(t=>{try{return JSON.parse(t.answer_data||`{}`)[e.id]}catch{return null}}).filter(e=>e!=null),r={total:t.length};if(e.type===`radio`||e.type===`select`){let n={};e.options.forEach(e=>{n[e]=0}),t.forEach(e=>{n[e]!==void 0&&n[e]++}),r.options=n}else if(e.type===`checkbox`){let n={};e.options.forEach(e=>{n[e]=0}),t.forEach(e=>{Array.isArray(e)&&e.forEach(e=>{n[e]!==void 0&&n[e]++})}),r.options=n}else if(e.type===`rating`){let e={};t.forEach(t=>{let n=String(t);e[n]=(e[n]||0)+1}),r.ratings=e,r.average=t.length>0?(t.reduce((e,t)=>e+Number(t),0)/t.length).toFixed(1):0}else e.type===`text`&&(r.sampleAnswers=t.slice(0,5));return{question:e,stats:r}}),a=`
166
+ - 方案可行有效(25%)`}};return n[e]||n.text},Yn=()=>{O.value=!0,k.value=``},Xn=async()=>{ae.value=!0,k.value=``;try{let e=await fetch(`/api/questionnaires/responses/${w.value}`);if(!e.ok)throw Error(`获取回答数据失败`);let t=await e.json(),n={questionnaire:{id:w.value,title:p.value,description:m.value,questions:b.value.map(e=>({id:e.id,title:e.title,type:e.type,options:e.options||[],required:e.required}))},responses:t.responses||[],totalResponses:t.total||0};await new Promise(e=>setTimeout(e,2e3)),k.value=Zn(n)}catch(e){r.ElMessage.error(`分析失败: `+e.message)}finally{ae.value=!1}},Zn=e=>{let{questionnaire:t,responses:n,totalResponses:r}=e,i=t.questions.map(e=>{let t=n.map(t=>{try{return JSON.parse(t.answer_data||`{}`)[e.id]}catch{return null}}).filter(e=>e!=null),r={total:t.length};if(e.type===`radio`||e.type===`select`){let n={};e.options.forEach(e=>{n[e]=0}),t.forEach(e=>{n[e]!==void 0&&n[e]++}),r.options=n}else if(e.type===`checkbox`){let n={};e.options.forEach(e=>{n[e]=0}),t.forEach(e=>{Array.isArray(e)&&e.forEach(e=>{n[e]!==void 0&&n[e]++})}),r.options=n}else if(e.type===`rating`){let e={};t.forEach(t=>{let n=String(t);e[n]=(e[n]||0)+1}),r.ratings=e,r.average=t.length>0?(t.reduce((e,t)=>e+Number(t),0)/t.length).toFixed(1):0}else e.type===`text`&&(r.sampleAnswers=t.slice(0,5));return{question:e,stats:r}}),a=`
167
167
  <div style="font-family: 'Microsoft YaHei', sans-serif; padding: 20px;">
168
168
  <h2 style="color: #409eff; border-bottom: 2px solid #409eff; padding-bottom: 10px;">📊 问卷智能分析报告</h2>
169
169
  <div style="background: #f5f7fa; padding: 15px; border-radius: 8px; margin: 15px 0;">
@@ -192,7 +192,7 @@ reactive用于创建响应式的复杂对象。ref用于创建响应式的基本
192
192
  `;return i.forEach((e,t)=>{let{question:n,stats:r}=e;if(a+=`
193
193
  <div style="background: #fff; border: 1px solid #ebeef5; border-radius: 8px; padding: 15px; margin: 10px 0;">
194
194
  <h4 style="color: #303133; margin-bottom: 10px;">${t+1}. ${n.title||`未命名题目`}</h4>
195
- <p style="color: #909399; font-size: 12px; margin-bottom: 10px;">类型:${Un(n.type)} | 回答数:${r.total}</p>
195
+ <p style="color: #909399; font-size: 12px; margin-bottom: 10px;">类型:${Qn(n.type)} | 回答数:${r.total}</p>
196
196
  `,n.type===`radio`||n.type===`select`||n.type===`checkbox`){if(r.options){a+=`<div style="margin-top: 10px;">`;let e=Math.max(...Object.values(r.options),1);Object.entries(r.options).forEach(([t,n])=>{let i=r.total>0?(n/r.total*100).toFixed(1):0,o=(n/e*100).toFixed(0);a+=`
197
197
  <div style="margin: 8px 0;">
198
198
  <div style="display: flex; justify-content: space-between; margin-bottom: 4px;">
@@ -219,12 +219,12 @@ reactive用于创建响应式的复杂对象。ref用于创建响应式的基本
219
219
  </ul>
220
220
  </div>
221
221
  </div>
222
- `,a},Un=e=>({text:`文本题`,radio:`单选题`,checkbox:`多选题`,select:`下拉题`,rating:`评分题`,scale:`量表题`,matrix:`矩阵题`,image:`图片题`})[e]||e,Wn=()=>{if(!T.value)return;let e=`<!DOCTYPE html>
222
+ `,a},Qn=e=>({text:`文本题`,radio:`单选题`,checkbox:`多选题`,select:`下拉题`,rating:`评分题`,scale:`量表题`,matrix:`矩阵题`,image:`图片题`})[e]||e,$n=()=>{if(!k.value)return;let e=`<!DOCTYPE html>
223
223
  <html lang="zh-CN">
224
224
  <head>
225
225
  <meta charset="UTF-8">
226
226
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
227
- <title>${c.value} - AI分析报告</title>
227
+ <title>${p.value} - AI分析报告</title>
228
228
  <style>
229
229
  * { box-sizing: border-box; margin: 0; padding: 0; }
230
230
  body { font-family: 'Microsoft YaHei', sans-serif; background: #f5f7fa; padding: 20px; }
@@ -239,10 +239,10 @@ reactive用于创建响应式的复杂对象。ref用于创建响应式的基本
239
239
  </head>
240
240
  <body>
241
241
  <div class="container">
242
- ${T.value}
242
+ ${k.value}
243
243
  </div>
244
244
  </body>
245
- </html>`,t=new Blob([e],{type:`text/html;charset=utf-8`}),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`${c.value||`问卷`}_AI分析报告.html`,i.click(),URL.revokeObjectURL(n),r.ElMessage.success(`AI分析报告已下载`)},Gn=async()=>{if(o.params.id){b.value=Number(o.params.id);try{let e=await fetch(`/api/questionnaires/${b.value}`);if(!e.ok)throw Error(`加载失败`);let t=await e.json();c.value=t.title,l.value=t.description||``,u.value=t.author||``,d.value=t.status||`draft`,f.value=t.begin_time?new Date(t.begin_time):null,p.value=t.end_time?new Date(t.end_time):null,t.collab_closed&&(P.value=!0),t.config&&bn(t.config)}catch(e){r.ElMessage.error(`加载问卷失败: `+e.message)}}},Kn=()=>{if(!b.value){r.ElMessage.warning(`请先保存问卷`);return}ie.value=!0},qn=e=>{try{let t=JSON.parse(e);t.title&&(c.value=t.title),t.description&&(l.value=t.description),t.author&&(u.value=t.author),t.questions&&(m.value=t.questions),t.settings&&t.settings.showScore!==void 0&&(g.value=t.settings.showScore)}catch(e){console.error(`Version apply error:`,e)}},Jn=async()=>{if(N.value){let e=I?.getMap(`_meta`);if(P.value||e?.get(`_closed`)===!0){P.value=!0,r.ElMessage.error(`协作已关闭,无法保存更新`);return}}if(m.value.length>0&&m.value.find(e=>!e.referenceAnswer||e.referenceAnswer.trim()===``||!e.scoringCriteria||e.scoringCriteria.trim()===``)){r.ElMessage.error(`请为所有题目填写参考答案和评分标准说明`);return}let e={title:c.value,description:l.value,author:u.value||`user`,config:$(),status:d.value,begin_time:f.value,end_time:p.value,...N.value?{is_collab_user:!0}:{}};try{let t;if(t=b.value?await fetch(`/api/questionnaires/${b.value}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}):await fetch(`/api/questionnaires/`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),t.status===403){P.value=!0,r.ElMessage.error(`协作已关闭,无法保存更新`);return}if(!t.ok)throw Error(`保存失败`);let n=await t.json();b.value||(b.value=n.id,s.replace(`/questionnaire-editor/${n.id}`)),r.ElMessage.success(`保存成功`),ae({documentId:b.value,docType:`questionnaire`,content:JSON.stringify({title:c.value,description:l.value,author:u.value||`user`,questions:m.value,settings:{showScore:g.value}}),userId:String(E.currentUser.value?.id||``),userName:E.currentUser.value?.name||u.value||`未知`})}catch(e){r.ElMessage.error(`保存失败: `+e.message)}},Yn=()=>s.push(`/`),Xn=[`我可以帮您设计问卷结构、优化题目表述,或者提供调查方案建议。请问有什么需要帮助的?`,`这份问卷的结构很合理。建议检查题目顺序是否符合逻辑,是否从易到难排列。`,`根据问卷主题,我建议添加一些开放式问题,收集更详细的用户反馈。`,`我可以帮您检查问卷中是否存在引导性问题或歧义表述。需要我逐题分析吗?`,`建议为每个题目添加选项"其他"和"不确定",提高数据的完整性。`,`问卷的题量适中。如果题目较多,建议分页展示,减少受访者的疲劳感。`,`我可以帮您分析问卷的逻辑跳转设置是否合理,确保不同分支的题目正确显示。`,`建议在问卷开头添加简短的说明文字,告知受访者问卷的目的和预计填写时间。`],Zn=async(e,t={})=>{let n=b.value?`${en}-${b.value}`:null;await E.sendMessage(e,{...t,roomId:n});let r=t.mentionedUser,i=r&&r.toLowerCase().includes(`ai`),a=E.collabUsers.value.filter(e=>e.name!==E.currentUser.value.name);(!r||i||a.length===0)&&(E.loading.value=!0,setTimeout(()=>{E.sendAiMessage(Xn[Math.floor(Math.random()*Xn.length)],n),E.loading.value=!1},800+Math.random()*1200))},Qn=()=>{let e=b.value?`${en}-${b.value}`:null;E.clearMessages(e)};return(0,e.onMounted)(()=>{Gn().then(()=>{if(b.value){nn();let e=new URLSearchParams(window.location.search);e.get(`collab`)===`1`&&cn(),e.get(`ai`)===`1`&&(te.value=!0)}})}),(0,e.onBeforeUnmount)(()=>{J(),L&&(L.disconnect(),L.destroy()),I&&I.destroy()}),(t,n)=>{let r=(0,e.resolveComponent)(`ArrowLeft`),i=(0,e.resolveComponent)(`el-icon`),a=(0,e.resolveComponent)(`el-button`),o=(0,e.resolveComponent)(`el-input`),s=(0,e.resolveComponent)(`el-option`),y=(0,e.resolveComponent)(`el-select`),ae=(0,e.resolveComponent)(`el-date-picker`),O=(0,e.resolveComponent)(`el-divider`),A=(0,e.resolveComponent)(`Download`),j=(0,e.resolveComponent)(`Upload`),pe=(0,e.resolveComponent)(`Printer`),P=(0,e.resolveComponent)(`ArrowDown`),F=(0,e.resolveComponent)(`el-dropdown-item`),I=(0,e.resolveComponent)(`el-dropdown-menu`),L=(0,e.resolveComponent)(`el-dropdown`),R=(0,e.resolveComponent)(`Share`),z=(0,e.resolveComponent)(`Link`),B=(0,e.resolveComponent)(`Promotion`),he=(0,e.resolveComponent)(`Message`),en=(0,e.resolveComponent)(`Cpu`),V=(0,e.resolveComponent)(`DataAnalysis`),H=(0,e.resolveComponent)(`List`),U=(0,e.resolveComponent)(`Monitor`),W=(0,e.resolveComponent)(`Check`),G=(0,e.resolveComponent)(`Clock`),tn=(0,e.resolveComponent)(`Setting`),K=(0,e.resolveComponent)(`el-color-picker`),nn=(0,e.resolveComponent)(`el-slider`),q=(0,e.resolveComponent)(`el-radio-button`),J=(0,e.resolveComponent)(`el-radio-group`),rn=(0,e.resolveComponent)(`el-popover`),an=(0,e.resolveComponent)(`el-input-number`),on=(0,e.resolveComponent)(`el-switch`),cn=(0,e.resolveComponent)(`Delete`),ln=(0,e.resolveComponent)(`Top`),Y=(0,e.resolveComponent)(`Bottom`),X=(0,e.resolveComponent)(`PictureFilled`),un=(0,e.resolveComponent)(`el-upload`),Z=(0,e.resolveComponent)(`Close`),dn=(0,e.resolveComponent)(`el-radio`),$=(0,e.resolveComponent)(`Plus`),bn=(0,e.resolveComponent)(`el-checkbox`),Tn=(0,e.resolveComponent)(`el-tag`),En=(0,e.resolveComponent)(`StarFilled`),kn=(0,e.resolveComponent)(`Switch`),zn=(0,e.resolveComponent)(`ArrowRight`),Hn=(0,e.resolveComponent)(`Trophy`),Un=(0,e.resolveComponent)(`Document`),Gn=(0,e.resolveComponent)(`Edit`),Xn=(0,e.resolveComponent)(`Select`),$n=(0,e.resolveComponent)(`Finished`),er=(0,e.resolveComponent)(`Histogram`),tr=(0,e.resolveComponent)(`Grid`),nr=(0,e.resolveComponent)(`el-dialog`),rr=(0,e.resolveComponent)(`Loading`),ir=(0,e.resolveComponent)(`el-table-column`),ar=(0,e.resolveComponent)(`el-link`),or=(0,e.resolveComponent)(`el-table`);return(0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,[(0,e.createElementVNode)(`div`,ge,[(0,e.createElementVNode)(`div`,_e,[(0,e.createElementVNode)(`div`,ve,[(0,e.createVNode)(a,{onClick:Yn,size:`small`,circle:``},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r)]),_:1})]),_:1}),(0,e.createVNode)(o,{modelValue:c.value,"onUpdate:modelValue":n[0]||=e=>c.value=e,class:`title-input`,placeholder:`问卷标题 *`,size:`small`,style:{width:`200px`},disabled:N.value},null,8,[`modelValue`,`disabled`]),(0,e.createVNode)(o,{modelValue:u.value,"onUpdate:modelValue":n[1]||=e=>u.value=e,class:`author-input`,placeholder:`作者 *`,size:`small`,style:{width:`140px`}},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,ye,[N.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(y,{key:0,modelValue:d.value,"onUpdate:modelValue":n[2]||=e=>d.value=e,size:`small`,style:{width:`90px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`草稿`,value:`draft`}),(0,e.createVNode)(s,{label:`已发布`,value:`published`}),(0,e.createVNode)(s,{label:`已关闭`,value:`closed`})]),_:1},8,[`modelValue`])),N.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(ae,{key:1,modelValue:f.value,"onUpdate:modelValue":n[3]||=e=>f.value=e,type:`datetime`,size:`small`,placeholder:`开始时间`,style:{width:`170px`}},null,8,[`modelValue`])),N.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(ae,{key:2,modelValue:p.value,"onUpdate:modelValue":n[4]||=e=>p.value=e,type:`datetime`,size:`small`,placeholder:`结束时间`,style:{width:`170px`}},null,8,[`modelValue`])),(0,e.createVNode)(O,{direction:`vertical`}),N.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(a,{key:3,size:`small`,onClick:xn,title:`导出JSON`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(A)]),_:1})]),_:1})),N.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(a,{key:4,size:`small`,onClick:Sn,title:`导入JSON`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(j)]),_:1})]),_:1})),(0,e.createElementVNode)(`input`,{ref_key:`importInputRef`,ref:ee,type:`file`,accept:`.json`,style:{display:`none`},onChange:Cn},null,544),N.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(O,{key:5,direction:`vertical`})),N.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(L,{key:6,trigger:`click`,onCommand:wn},{dropdown:(0,e.withCtx)(()=>[(0,e.createVNode)(I,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(F,{command:`pdf`},{default:(0,e.withCtx)(()=>[...n[47]||=[(0,e.createTextVNode)(`导出 PDF`,-1)]]),_:1}),(0,e.createVNode)(F,{command:`word`},{default:(0,e.withCtx)(()=>[...n[48]||=[(0,e.createTextVNode)(`导出 Word`,-1)]]),_:1}),(0,e.createVNode)(F,{command:`html`},{default:(0,e.withCtx)(()=>[...n[49]||=[(0,e.createTextVNode)(`导出 HTML`,-1)]]),_:1}),(0,e.createVNode)(F,{command:`standalone`},{default:(0,e.withCtx)(()=>[...n[50]||=[(0,e.createTextVNode)(`独立 HTML 表单`,-1)]]),_:1})]),_:1})]),default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(pe)]),_:1}),n[46]||=(0,e.createTextVNode)(` 导出 `,-1),(0,e.createVNode)(i,{class:`el-icon--right`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(P)]),_:1})]),_:1})]),_:1})),N.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(O,{key:7,direction:`vertical`})),N.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(a,{key:8,size:`small`,type:M.value?`success`:`default`,onClick:sn},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(R)]),_:1}),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(M.value?`协作中`:`协作`),1)]),_:1},8,[`type`])),b.value&&M.value&&!N.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:9,size:`small`,circle:``,onClick:Dn,title:`分享协作编辑链接`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(z)]),_:1})]),_:1})):(0,e.createCommentVNode)(``,!0),b.value&&!N.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:10,size:`small`,circle:``,onClick:On,title:`分享填写链接`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(B)]),_:1})]),_:1})):(0,e.createCommentVNode)(``,!0),b.value&&!N.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:11,size:`small`,type:`warning`,onClick:n[5]||=e=>S.value=!0,title:`问卷分发`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(he)]),_:1}),n[51]||=(0,e.createTextVNode)(` 分发 `,-1)]),_:1})):(0,e.createCommentVNode)(``,!0),b.value&&!N.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:12,size:`small`,onClick:Bn,title:`AI分析`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(en)]),_:1}),n[52]||=(0,e.createElementVNode)(`span`,null,`AI`,-1)]),_:1})):(0,e.createCommentVNode)(``,!0),b.value&&!N.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:13,size:`small`,onClick:Pn,title:`查看统计`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(V)]),_:1})]),_:1})):(0,e.createCommentVNode)(``,!0),b.value&&!N.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:14,size:`small`,onClick:Fn,title:`反馈列表`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(H)]),_:1})]),_:1})):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(a,{size:`small`,circle:``,type:re.value?`primary`:`default`,onClick:n[6]||=e=>re.value=!re.value,title:`AI助手`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(U)]),_:1})]),_:1},8,[`type`]),(0,e.createVNode)(a,{size:`small`,type:`primary`,onClick:Jn},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(W)]),_:1}),n[53]||=(0,e.createTextVNode)(` 保存`,-1)]),_:1}),b.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:15,size:`small`,circle:``,title:`更新履历`,onClick:Kn},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(G)]),_:1})]),_:1})):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`div`,be,[(0,e.createElementVNode)(`div`,xe,[(0,e.createElementVNode)(`div`,{class:`q-header-card`,style:(0,e.normalizeStyle)({background:x.backgroundColor,"--header-font":x.headerFont,"--header-font-size":x.headerFontSize+`px`,"--header-font-style":x.headerFontStyle,"--header-color":x.headerColor,"--title-align":x.titleAlign,"--title-font":x.titleFont,"--title-font-style":x.titleFontStyle,"--title-font-size":x.titleFontSize+`px`,"--title-color":x.titleColor,"--desc-align":x.descAlign,"--desc-font":x.descFont,"--desc-font-style":x.descFontStyle,"--desc-font-size":x.descFontSize+`px`,"--desc-color":x.descColor})},[(0,e.createElementVNode)(`div`,Se,[(0,e.createVNode)(o,{modelValue:c.value,"onUpdate:modelValue":n[7]||=e=>c.value=e,placeholder:`请输入问卷标题`,class:`q-title-input`},null,8,[`modelValue`]),(0,e.createVNode)(rn,{placement:`right`,width:320,trigger:`click`},{reference:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{size:`small`,circle:``,class:`q-header-setting-btn`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(tn)]),_:1})]),_:1})]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,Ce,[(0,e.createElementVNode)(`div`,we,[n[54]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`背景颜色`,-1),(0,e.createVNode)(K,{modelValue:x.backgroundColor,"onUpdate:modelValue":n[8]||=e=>x.backgroundColor=e,size:`small`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Te,[n[55]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字体`,-1),(0,e.createVNode)(y,{modelValue:x.headerFont,"onUpdate:modelValue":n[9]||=e=>x.headerFont=e,size:`small`,style:{width:`120px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`默认`,value:`inherit`}),(0,e.createVNode)(s,{label:`宋体`,value:`SimSun, serif`}),(0,e.createVNode)(s,{label:`黑体`,value:`SimHei, sans-serif`}),(0,e.createVNode)(s,{label:`微软雅黑`,value:`Microsoft YaHei, sans-serif`}),(0,e.createVNode)(s,{label:`楷体`,value:`KaiTi, serif`}),(0,e.createVNode)(s,{label:`Arial`,value:`Arial, sans-serif`}),(0,e.createVNode)(s,{label:`Times New Roman`,value:`Times New Roman, serif`})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Ee,[n[56]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字号`,-1),(0,e.createVNode)(nn,{modelValue:x.headerFontSize,"onUpdate:modelValue":n[10]||=e=>x.headerFontSize=e,min:10,max:24,step:1,"show-input":``,size:`small`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,De,[n[59]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`样式`,-1),(0,e.createVNode)(J,{modelValue:x.headerFontStyle,"onUpdate:modelValue":n[11]||=e=>x.headerFontStyle=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(q,{value:`normal`},{default:(0,e.withCtx)(()=>[...n[57]||=[(0,e.createTextVNode)(`常规`,-1)]]),_:1}),(0,e.createVNode)(q,{value:`italic`},{default:(0,e.withCtx)(()=>[...n[58]||=[(0,e.createTextVNode)(`斜体`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Oe,[n[60]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`颜色`,-1),(0,e.createVNode)(K,{modelValue:x.headerColor,"onUpdate:modelValue":n[12]||=e=>x.headerColor=e,size:`small`},null,8,[`modelValue`])]),(0,e.createVNode)(O),n[81]||=(0,e.createElementVNode)(`div`,{class:`q-settings-section-title`},`标题样式`,-1),(0,e.createElementVNode)(`div`,ke,[n[64]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`对齐`,-1),(0,e.createVNode)(J,{modelValue:x.titleAlign,"onUpdate:modelValue":n[13]||=e=>x.titleAlign=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(q,{value:`left`},{default:(0,e.withCtx)(()=>[...n[61]||=[(0,e.createTextVNode)(`左`,-1)]]),_:1}),(0,e.createVNode)(q,{value:`center`},{default:(0,e.withCtx)(()=>[...n[62]||=[(0,e.createTextVNode)(`中`,-1)]]),_:1}),(0,e.createVNode)(q,{value:`right`},{default:(0,e.withCtx)(()=>[...n[63]||=[(0,e.createTextVNode)(`右`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Ae,[n[65]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字体`,-1),(0,e.createVNode)(y,{modelValue:x.titleFont,"onUpdate:modelValue":n[14]||=e=>x.titleFont=e,size:`small`,style:{width:`120px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`默认`,value:`inherit`}),(0,e.createVNode)(s,{label:`宋体`,value:`SimSun, serif`}),(0,e.createVNode)(s,{label:`黑体`,value:`SimHei, sans-serif`}),(0,e.createVNode)(s,{label:`微软雅黑`,value:`Microsoft YaHei, sans-serif`}),(0,e.createVNode)(s,{label:`楷体`,value:`KaiTi, serif`}),(0,e.createVNode)(s,{label:`Arial`,value:`Arial, sans-serif`}),(0,e.createVNode)(s,{label:`Times New Roman`,value:`Times New Roman, serif`})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,je,[n[68]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`样式`,-1),(0,e.createVNode)(J,{modelValue:x.titleFontStyle,"onUpdate:modelValue":n[15]||=e=>x.titleFontStyle=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(q,{value:`normal`},{default:(0,e.withCtx)(()=>[...n[66]||=[(0,e.createTextVNode)(`常规`,-1)]]),_:1}),(0,e.createVNode)(q,{value:`italic`},{default:(0,e.withCtx)(()=>[...n[67]||=[(0,e.createTextVNode)(`斜体`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Me,[n[69]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字号`,-1),(0,e.createVNode)(nn,{modelValue:x.titleFontSize,"onUpdate:modelValue":n[16]||=e=>x.titleFontSize=e,min:12,max:40,step:1,"show-input":``,size:`small`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Ne,[n[70]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`颜色`,-1),(0,e.createVNode)(K,{modelValue:x.titleColor,"onUpdate:modelValue":n[17]||=e=>x.titleColor=e,size:`small`},null,8,[`modelValue`])]),(0,e.createVNode)(O),n[82]||=(0,e.createElementVNode)(`div`,{class:`q-settings-section-title`},`说明样式`,-1),(0,e.createElementVNode)(`div`,Pe,[n[74]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`对齐`,-1),(0,e.createVNode)(J,{modelValue:x.descAlign,"onUpdate:modelValue":n[18]||=e=>x.descAlign=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(q,{value:`left`},{default:(0,e.withCtx)(()=>[...n[71]||=[(0,e.createTextVNode)(`左`,-1)]]),_:1}),(0,e.createVNode)(q,{value:`center`},{default:(0,e.withCtx)(()=>[...n[72]||=[(0,e.createTextVNode)(`中`,-1)]]),_:1}),(0,e.createVNode)(q,{value:`right`},{default:(0,e.withCtx)(()=>[...n[73]||=[(0,e.createTextVNode)(`右`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Fe,[n[75]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字体`,-1),(0,e.createVNode)(y,{modelValue:x.descFont,"onUpdate:modelValue":n[19]||=e=>x.descFont=e,size:`small`,style:{width:`120px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`默认`,value:`inherit`}),(0,e.createVNode)(s,{label:`宋体`,value:`SimSun, serif`}),(0,e.createVNode)(s,{label:`黑体`,value:`SimHei, sans-serif`}),(0,e.createVNode)(s,{label:`微软雅黑`,value:`Microsoft YaHei, sans-serif`}),(0,e.createVNode)(s,{label:`楷体`,value:`KaiTi, serif`}),(0,e.createVNode)(s,{label:`Arial`,value:`Arial, sans-serif`}),(0,e.createVNode)(s,{label:`Times New Roman`,value:`Times New Roman, serif`})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Ie,[n[78]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`样式`,-1),(0,e.createVNode)(J,{modelValue:x.descFontStyle,"onUpdate:modelValue":n[20]||=e=>x.descFontStyle=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(q,{value:`normal`},{default:(0,e.withCtx)(()=>[...n[76]||=[(0,e.createTextVNode)(`常规`,-1)]]),_:1}),(0,e.createVNode)(q,{value:`italic`},{default:(0,e.withCtx)(()=>[...n[77]||=[(0,e.createTextVNode)(`斜体`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Le,[n[79]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字号`,-1),(0,e.createVNode)(nn,{modelValue:x.descFontSize,"onUpdate:modelValue":n[21]||=e=>x.descFontSize=e,min:10,max:24,step:1,"show-input":``,size:`small`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Re,[n[80]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`颜色`,-1),(0,e.createVNode)(K,{modelValue:x.descColor,"onUpdate:modelValue":n[22]||=e=>x.descColor=e,size:`small`},null,8,[`modelValue`])])])]),_:1})]),(0,e.createVNode)(o,{modelValue:l.value,"onUpdate:modelValue":n[23]||=e=>l.value=e,type:`textarea`,rows:2,placeholder:`问卷说明(选填)`,class:`q-desc-input`},null,8,[`modelValue`]),(0,e.createElementVNode)(`div`,ze,[(0,e.createElementVNode)(`div`,Be,[n[83]||=(0,e.createElementVNode)(`span`,null,`及格分:`,-1),(0,e.createVNode)(an,{modelValue:h.value,"onUpdate:modelValue":n[24]||=e=>h.value=e,min:0,size:`small`},null,8,[`modelValue`]),(0,e.createElementVNode)(`span`,Ve,`总分:`+(0,e.toDisplayString)(k.value)+`分`,1)]),(0,e.createElementVNode)(`div`,He,[n[84]||=(0,e.createElementVNode)(`span`,null,`立刻给出评分:`,-1),(0,e.createVNode)(on,{modelValue:g.value,"onUpdate:modelValue":n[25]||=e=>g.value=e,size:`small`,"active-text":`是`,"inactive-text":`否`},null,8,[`modelValue`]),n[85]||=(0,e.createElementVNode)(`span`,{class:`q-show-score-tip`},`(选"否"则提交时不显示得分)`,-1)])])],4),(0,e.createElementVNode)(`div`,Ue,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(m.value,(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id,class:(0,e.normalizeClass)([`q-card`,{active:_.value===t.id}]),onClick:e=>_.value=t.id,draggable:`true`,onDragstart:e=>_n(r,e),onDragover:(0,e.withModifiers)(e=>vn(r,e),[`prevent`]),onDrop:e=>yn(r,e)},[(0,e.createElementVNode)(`div`,Ge,[(0,e.createVNode)(a,{size:`small`,circle:``,onClick:(0,e.withModifiers)(e=>In(r),[`stop`]),title:`AI生成题目`,class:`ai-gen-btn`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(en)]),_:1})]),_:1},8,[`onClick`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:(0,e.withModifiers)(e=>fn(r),[`stop`]),title:`删除`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(cn)]),_:1})]),_:1},8,[`onClick`])]),(0,e.createElementVNode)(`div`,Ke,[(0,e.createElementVNode)(`span`,qe,(0,e.toDisplayString)(r+1)+`.`,1),(0,e.createVNode)(o,{modelValue:t.title,"onUpdate:modelValue":e=>t.title=e,placeholder:`请输入题目标题`,size:`small`,class:`q-title`},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createElementVNode)(`div`,Je,[(0,e.createVNode)(a,{size:`small`,circle:``,onClick:(0,e.withModifiers)(e=>pn(r,-1),[`stop`]),disabled:r===0,title:`上移`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(ln)]),_:1})]),_:1},8,[`onClick`,`disabled`]),(0,e.createVNode)(a,{size:`small`,circle:``,onClick:(0,e.withModifiers)(e=>pn(r,1),[`stop`]),disabled:r===m.value.length-1,title:`下移`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Y)]),_:1})]),_:1},8,[`onClick`,`disabled`]),(0,e.createVNode)(on,{modelValue:t.required,"onUpdate:modelValue":e=>t.required=e,size:`small`,"active-text":`必填`,onClick:n[26]||=(0,e.withModifiers)(()=>{},[`stop`]),style:{"margin-left":`8px`}},null,8,[`modelValue`,`onUpdate:modelValue`])])]),(0,e.createElementVNode)(`div`,Ye,[(0,e.createElementVNode)(`div`,Xe,[(0,e.createVNode)(o,{modelValue:t.description,"onUpdate:modelValue":e=>t.description=e,placeholder:`题目说明(选填)`,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`])]),(0,e.createElementVNode)(`div`,Ze,[(0,e.createVNode)(un,{"show-file-list":!1,"before-upload":e=>gn(t,e),accept:`image/*`,class:`q-img-upload`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{size:`small`,circle:``},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(X)]),_:1})]),_:1})]),_:1},8,[`before-upload`]),t.image?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Qe,[(0,e.createElementVNode)(`img`,{src:t.image},null,8,$e),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,class:`q-img-remove`,onClick:e=>t.image=``},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Z)]),_:1})]),_:1},8,[`onClick`])])):(0,e.createCommentVNode)(``,!0)]),t.type===`text`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,et,[(0,e.createVNode)(o,{modelValue:t.placeholder,"onUpdate:modelValue":e=>t.placeholder=e,placeholder:`回答提示文字`,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(y,{modelValue:t.textType,"onUpdate:modelValue":e=>t.textType=e,size:`small`,style:{width:`120px`,"margin-left":`8px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`单行文本`,value:`single`}),(0,e.createVNode)(s,{label:`多行文本`,value:`multi`})]),_:1},8,[`modelValue`,`onUpdate:modelValue`])])):(0,e.createCommentVNode)(``,!0),t.type===`radio`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,tt,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`q-option-item`},[(0,e.createVNode)(dn,{"model-value":0,disabled:``}),(0,e.createVNode)(o,{modelValue:t.options[r],"onUpdate:modelValue":e=>t.options[r]=e,size:`small`,placeholder:`选项`,style:{flex:`1`}},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:e=>hn(t,r)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Z)]),_:1})]),_:1},8,[`onClick`])]))),128)),(0,e.createVNode)(a,{size:`small`,onClick:e=>mn(t)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)($)]),_:1}),n[86]||=(0,e.createTextVNode)(` 添加选项`,-1)]),_:1},8,[`onClick`])])):(0,e.createCommentVNode)(``,!0),t.type===`checkbox`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,nt,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`q-option-item`},[(0,e.createVNode)(bn,{disabled:``}),(0,e.createVNode)(o,{modelValue:t.options[r],"onUpdate:modelValue":e=>t.options[r]=e,size:`small`,placeholder:`选项`,style:{flex:`1`}},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:e=>hn(t,r)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Z)]),_:1})]),_:1},8,[`onClick`])]))),128)),(0,e.createVNode)(a,{size:`small`,onClick:e=>mn(t)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)($)]),_:1}),n[87]||=(0,e.createTextVNode)(` 添加选项`,-1)]),_:1},8,[`onClick`])])):(0,e.createCommentVNode)(``,!0),t.type===`select`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,rt,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`q-option-item`},[(0,e.createVNode)(Tn,{size:`small`,type:`info`},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(r+1),1)]),_:2},1024),(0,e.createVNode)(o,{modelValue:t.options[r],"onUpdate:modelValue":e=>t.options[r]=e,size:`small`,placeholder:`选项`,style:{flex:`1`}},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:e=>hn(t,r)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Z)]),_:1})]),_:1},8,[`onClick`])]))),128)),(0,e.createVNode)(a,{size:`small`,onClick:e=>mn(t)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)($)]),_:1}),n[88]||=(0,e.createTextVNode)(` 添加选项`,-1)]),_:1},8,[`onClick`])])):(0,e.createCommentVNode)(``,!0),t.type===`rating`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,it,[(0,e.createElementVNode)(`div`,at,[n[91]||=(0,e.createElementVNode)(`span`,null,`最大分值:`,-1),(0,e.createVNode)(an,{modelValue:t.maxRating,"onUpdate:modelValue":e=>t.maxRating=e,min:3,max:10,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`]),n[92]||=(0,e.createElementVNode)(`span`,{style:{"margin-left":`16px`}},`图标:`,-1),(0,e.createVNode)(J,{modelValue:t.ratingIcon,"onUpdate:modelValue":e=>t.ratingIcon=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(q,{label:`star`},{default:(0,e.withCtx)(()=>[...n[89]||=[(0,e.createTextVNode)(`星形`,-1)]]),_:1}),(0,e.createVNode)(q,{label:`heart`},{default:(0,e.withCtx)(()=>[...n[90]||=[(0,e.createTextVNode)(`心形`,-1)]]),_:1})]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]),(0,e.createElementVNode)(`div`,ot,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.maxRating||5,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:n,class:`rating-icon`,onClick:e=>t._preview=n},[(0,e.createVNode)(i,{size:20,class:(0,e.normalizeClass)({active:n<=(t._preview||0)})},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(En)]),_:1},8,[`class`])],8,st))),128))])])):(0,e.createCommentVNode)(``,!0),t.type===`scale`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ct,[(0,e.createElementVNode)(`div`,lt,[(0,e.createVNode)(o,{modelValue:t.scaleMinLabel,"onUpdate:modelValue":e=>t.scaleMinLabel=e,size:`small`,placeholder:`最低标签`,style:{width:`120px`}},null,8,[`modelValue`,`onUpdate:modelValue`]),n[93]||=(0,e.createElementVNode)(`span`,null,`← 量表 →`,-1),(0,e.createVNode)(o,{modelValue:t.scaleMaxLabel,"onUpdate:modelValue":e=>t.scaleMaxLabel=e,size:`small`,placeholder:`最高标签`,style:{width:`120px`}},null,8,[`modelValue`,`onUpdate:modelValue`]),n[94]||=(0,e.createElementVNode)(`span`,{style:{"margin-left":`12px`}},`刻度数:`,-1),(0,e.createVNode)(an,{modelValue:t.scaleCount,"onUpdate:modelValue":e=>t.scaleCount=e,min:5,max:10,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`])]),(0,e.createElementVNode)(`div`,ut,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.scaleCount||7,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t,class:`scale-dot`},[n[95]||=(0,e.createElementVNode)(`div`,{class:`dot`},null,-1),(0,e.createElementVNode)(`span`,dt,(0,e.toDisplayString)(t),1)]))),128))])])):(0,e.createCommentVNode)(``,!0),t.type===`matrix`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ft,[(0,e.createElementVNode)(`div`,pt,[(0,e.createElementVNode)(`div`,mt,[n[97]||=(0,e.createElementVNode)(`span`,{class:`label`},`行标题:`,-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.matrixRows,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`q-option-item`},[(0,e.createVNode)(o,{modelValue:t.matrixRows[r],"onUpdate:modelValue":e=>t.matrixRows[r]=e,size:`small`,placeholder:`行标题`,style:{flex:`1`}},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:e=>t.matrixRows.splice(r,1)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Z)]),_:1})]),_:1},8,[`onClick`])]))),128)),(0,e.createVNode)(a,{size:`small`,onClick:e=>t.matrixRows.push(``)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)($)]),_:1}),n[96]||=(0,e.createTextVNode)(` 添加行`,-1)]),_:1},8,[`onClick`])]),(0,e.createElementVNode)(`div`,ht,[n[99]||=(0,e.createElementVNode)(`span`,{class:`label`},`列标题:`,-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.matrixCols,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`q-option-item`},[(0,e.createVNode)(o,{modelValue:t.matrixCols[r],"onUpdate:modelValue":e=>t.matrixCols[r]=e,size:`small`,placeholder:`列标题`,style:{flex:`1`}},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:e=>t.matrixCols.splice(r,1)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Z)]),_:1})]),_:1},8,[`onClick`])]))),128)),(0,e.createVNode)(a,{size:`small`,onClick:e=>t.matrixCols.push(``)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)($)]),_:1}),n[98]||=(0,e.createTextVNode)(` 添加列`,-1)]),_:1},8,[`onClick`])])]),t.matrixRows.length&&t.matrixCols.length?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,gt,[(0,e.createElementVNode)(`table`,_t,[(0,e.createElementVNode)(`thead`,null,[(0,e.createElementVNode)(`tr`,null,[n[100]||=(0,e.createElementVNode)(`th`,null,null,-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.matrixCols,(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:n},(0,e.toDisplayString)(t||`列${n+1}`),1))),128))])]),(0,e.createElementVNode)(`tbody`,null,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.matrixRows,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,{key:r},[(0,e.createElementVNode)(`td`,null,(0,e.toDisplayString)(n||`行${r+1}`),1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.matrixCols,(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:n},[(0,e.createVNode)(dn,{disabled:``})]))),128))]))),128))])])])):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),t.type===`image`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,vt,[(0,e.createVNode)(o,{modelValue:t.imageQuestionText,"onUpdate:modelValue":e=>t.imageQuestionText=e,placeholder:`请输入图片相关说明文字`,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`])])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,yt,[(0,e.createElementVNode)(`div`,bt,[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(kn)]),_:1}),n[101]||=(0,e.createElementVNode)(`span`,null,`跳转逻辑`,-1)]),(0,e.createElementVNode)(`div`,xt,[n[102]||=(0,e.createElementVNode)(`span`,{class:`skip-label`},`默认跳转:`,-1),(0,e.createVNode)(y,{modelValue:t.skipTo,"onUpdate:modelValue":e=>t.skipTo=e,size:`small`,clearable:``,placeholder:`下一题(默认)`,style:{width:`200px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`下一题(默认)`,value:``}),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(m.value,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(s,{key:t.id,label:`${n+1}. ${t.title||`未命名`}`,value:t.id},null,8,[`label`,`value`]))),128)),(0,e.createVNode)(s,{label:`结束问卷`,value:`__END__`})]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]),[`radio`,`checkbox`,`select`].includes(t.type)?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,St,[n[103]||=(0,e.createElementVNode)(`div`,{class:`skip-rules-title`},`按选项跳转:`,-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options||[],(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`skip-rule-row`},[(0,e.createElementVNode)(`span`,Ct,(0,e.toDisplayString)(n),1),(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(zn)]),_:1}),(0,e.createVNode)(y,{modelValue:t.optionSkipTo[r],"onUpdate:modelValue":e=>t.optionSkipTo[r]=e,size:`small`,clearable:``,placeholder:`默认`,style:{width:`180px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`默认(下一题)`,value:``}),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(m.value,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(s,{key:t.id,label:`${n+1}. ${t.title||`未命名`}`,value:t.id},null,8,[`label`,`value`]))),128)),(0,e.createVNode)(s,{label:`结束问卷`,value:`__END__`})]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]))),128))])):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,wt,[(0,e.createElementVNode)(`div`,Tt,[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Hn)]),_:1}),n[104]||=(0,e.createElementVNode)(`span`,null,`计分设置`,-1)]),(0,e.createElementVNode)(`div`,Et,[n[105]||=(0,e.createElementVNode)(`span`,{class:`score-label`},`本题分值:`,-1),(0,e.createVNode)(an,{modelValue:t.score,"onUpdate:modelValue":e=>t.score=e,min:0,max:100,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`])]),[`radio`,`checkbox`,`select`].includes(t.type)?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Dt,[n[106]||=(0,e.createElementVNode)(`div`,{class:`score-options-title`},`各选项分值(-1表示不计分):`,-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options||[],(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`score-option-row`},[(0,e.createElementVNode)(`span`,Ot,(0,e.toDisplayString)(n),1),(0,e.createVNode)(an,{modelValue:t.optionScore[r],"onUpdate:modelValue":e=>t.optionScore[r]=e,min:-1,max:100,size:`small`,style:{width:`120px`}},null,8,[`modelValue`,`onUpdate:modelValue`])]))),128))])):(0,e.createCommentVNode)(``,!0),t.type===`rating`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,kt,[n[107]||=(0,e.createElementVNode)(`span`,{class:`score-label`},`评分即得分:`,-1),(0,e.createVNode)(on,{modelValue:t.ratingAsScore,"onUpdate:modelValue":e=>t.ratingAsScore=e,size:`small`,"active-text":`是`,"inactive-text":`否`},null,8,[`modelValue`,`onUpdate:modelValue`])])):(0,e.createCommentVNode)(``,!0),t.type===`scale`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,At,[n[108]||=(0,e.createElementVNode)(`span`,{class:`score-label`},`量表即得分:`,-1),(0,e.createVNode)(on,{modelValue:t.scaleAsScore,"onUpdate:modelValue":e=>t.scaleAsScore=e,size:`small`,"active-text":`是`,"inactive-text":`否`},null,8,[`modelValue`,`onUpdate:modelValue`])])):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,jt,[(0,e.createElementVNode)(`div`,Mt,[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Un)]),_:1}),n[109]||=(0,e.createElementVNode)(`span`,null,`评分说明`,-1),n[110]||=(0,e.createElementVNode)(`span`,{class:`required-mark`},`*`,-1)]),(0,e.createElementVNode)(`div`,Nt,[n[111]||=(0,e.createElementVNode)(`label`,{class:`scoring-guide-label`},`参考答案`,-1),(0,e.createVNode)(o,{modelValue:t.referenceAnswer,"onUpdate:modelValue":e=>t.referenceAnswer=e,type:`textarea`,rows:3,placeholder:`请输入本题的参考答案(必填)`,class:(0,e.normalizeClass)({"is-error":!t.referenceAnswer})},null,8,[`modelValue`,`onUpdate:modelValue`,`class`])]),(0,e.createElementVNode)(`div`,Pt,[n[112]||=(0,e.createElementVNode)(`label`,{class:`scoring-guide-label`},`评分标准说明`,-1),(0,e.createVNode)(o,{modelValue:t.scoringCriteria,"onUpdate:modelValue":e=>t.scoringCriteria=e,type:`textarea`,rows:3,placeholder:`请输入评分标准和扣分规则(必填)`,class:(0,e.normalizeClass)({"is-error":!t.scoringCriteria})},null,8,[`modelValue`,`onUpdate:modelValue`,`class`])]),!t.referenceAnswer||!t.scoringCriteria?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ft,`参考答案和评分标准说明均为必填项`)):(0,e.createCommentVNode)(``,!0)])])],42,We))),128))],512),(0,e.createElementVNode)(`div`,It,[(0,e.createElementVNode)(`div`,Lt,[(0,e.createVNode)(a,{type:`primary`,plain:``,onClick:n[27]||=e=>v.value=!v.value},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)($)]),_:1}),n[113]||=(0,e.createTextVNode)(` 添加题目 `,-1)]),_:1}),v.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`q-add-overlay`,onClick:n[28]||=e=>v.value=!1})):(0,e.createCommentVNode)(``,!0),v.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,class:(0,e.normalizeClass)([`q-add-menu`,m.value.length===0?`menu-right`:`menu-top`])},[(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[29]||=e=>Q(`text`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Gn)]),_:1}),n[114]||=(0,e.createTextVNode)(` 文本题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[30]||=e=>Q(`radio`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Xn)]),_:1}),n[115]||=(0,e.createTextVNode)(` 单选题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[31]||=e=>Q(`checkbox`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)($n)]),_:1}),n[116]||=(0,e.createTextVNode)(` 多选题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[32]||=e=>Q(`select`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(P)]),_:1}),n[117]||=(0,e.createTextVNode)(` 下拉题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[33]||=e=>Q(`rating`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(En)]),_:1}),n[118]||=(0,e.createTextVNode)(` 评分题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[34]||=e=>Q(`scale`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(er)]),_:1}),n[119]||=(0,e.createTextVNode)(` 量表题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[35]||=e=>Q(`matrix`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(tr)]),_:1}),n[120]||=(0,e.createTextVNode)(` 矩阵题`,-1)])],2)):(0,e.createCommentVNode)(``,!0)])])],512)])]),(0,e.createVNode)(nr,{modelValue:oe.value,"onUpdate:modelValue":n[38]||=e=>oe.value=e,title:`AI生成题目`,width:`600px`,top:`10vh`},{footer:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{onClick:n[37]||=e=>oe.value=!1},{default:(0,e.withCtx)(()=>[...n[126]||=[(0,e.createTextVNode)(`取消`,-1)]]),_:1}),(0,e.createVNode)(a,{type:`primary`,onClick:Rn,loading:se.value},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(en)]),_:1}),n[127]||=(0,e.createTextVNode)(` 生成题目 `,-1)]),_:1},8,[`loading`])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,Rt,[(0,e.createElementVNode)(`div`,zt,[(0,e.createElementVNode)(`label`,null,[n[121]||=(0,e.createTextVNode)(`当前题型:`,-1),(0,e.createElementVNode)(`span`,Bt,(0,e.toDisplayString)(fe(le.value)),1)])]),(0,e.createElementVNode)(`div`,Vt,[n[122]||=(0,e.createElementVNode)(`label`,null,`请输入生成要求:`,-1),(0,e.createVNode)(o,{modelValue:D.value,"onUpdate:modelValue":n[36]||=e=>D.value=e,type:`textarea`,rows:4,placeholder:`例如:请生成一道关于JavaScript基础的单选题,考察变量声明的概念`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Ht,[n[125]||=(0,e.createElementVNode)(`label`,null,`上传参考附件(可选):`,-1),(0,e.createVNode)(un,{ref_key:`aiGenUploadRef`,ref:ue,"auto-upload":!1,"on-change":Ln,"file-list":ce.value,accept:`.txt,.pdf,.doc,.docx,.md`,limit:5},{tip:(0,e.withCtx)(()=>[...n[124]||=[(0,e.createElementVNode)(`div`,{class:`el-upload__tip`},`支持 txt/pdf/doc/docx/md 格式,最多5个文件`,-1)]]),default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{size:`small`,type:`primary`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(j)]),_:1}),n[123]||=(0,e.createTextVNode)(` 选择文件 `,-1)]),_:1})]),_:1},8,[`file-list`])])])]),_:1},8,[`modelValue`]),(0,e.createVNode)(nr,{modelValue:te.value,"onUpdate:modelValue":n[40]||=e=>te.value=e,title:`AI智能分析`,width:`800px`,top:`5vh`},{footer:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{onClick:n[39]||=e=>te.value=!1},{default:(0,e.withCtx)(()=>[...n[132]||=[(0,e.createTextVNode)(`关闭`,-1)]]),_:1}),(0,e.createVNode)(a,{type:`primary`,onClick:Vn,loading:ne.value},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(en)]),_:1}),n[133]||=(0,e.createTextVNode)(` 开始分析 `,-1)]),_:1},8,[`loading`])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,Ut,[ne.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Wt,[(0,e.createVNode)(i,{class:`is-loading`,size:40},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(rr)]),_:1}),n[128]||=(0,e.createElementVNode)(`p`,null,`正在分析问卷数据...`,-1)])):T.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Gt,[(0,e.createElementVNode)(`div`,Kt,[n[130]||=(0,e.createElementVNode)(`h3`,null,`分析结果`,-1),(0,e.createVNode)(a,{size:`small`,type:`primary`,onClick:Wn},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(A)]),_:1}),n[129]||=(0,e.createTextVNode)(` 下载HTML报告 `,-1)]),_:1})]),(0,e.createElementVNode)(`div`,{class:`ai-result-content`,innerHTML:T.value},null,8,qt)])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Jt,[...n[131]||=[(0,e.createElementVNode)(`p`,null,`点击"开始分析"按钮,AI将对问卷数据进行智能分析`,-1)]]))])]),_:1},8,[`modelValue`]),(0,e.createVNode)(nr,{modelValue:S.value,"onUpdate:modelValue":n[42]||=e=>S.value=e,title:`问卷分发`,width:`680px`,top:`5vh`},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,Yt,[n[138]||=(0,e.createElementVNode)(`p`,{class:`distribute-desc`},`输入邮箱地址,系统将为每个邮箱生成唯一填写链接。支持手动输入或导入Excel。`,-1),(0,e.createElementVNode)(`div`,Xt,[(0,e.createVNode)(o,{modelValue:C.value,"onUpdate:modelValue":n[41]||=e=>C.value=e,type:`textarea`,rows:6,placeholder:`请输入邮箱地址,每行一个,支持逗号分隔
245
+ </html>`,t=new Blob([e],{type:`text/html;charset=utf-8`}),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`${p.value||`问卷`}_AI分析报告.html`,i.click(),URL.revokeObjectURL(n),r.ElMessage.success(`AI分析报告已下载`)},er=async()=>{if(d.value){w.value=Number(d.value);try{let e;e=typeof l.loadApi==`function`?(await l.loadApi(d.value)).data:l.loadApi?(await i.default.get(`${l.loadApi}/${d.value}`)).data:(await f.value.get(d.value)).data,p.value=e.title,m.value=e.description||``,h.value=e.author||l.user?.name||``,g.value=e.status||`draft`,_.value=e.begin_time?new Date(e.begin_time):null,y.value=e.end_time?new Date(e.end_time):null,e.collab_closed&&(L.value=!0),e.config&&kn(e.config)}catch(e){r.ElMessage.error(`加载问卷失败: `+e.message)}}},tr=()=>{if(!w.value){r.ElMessage.warning(`请先保存问卷`);return}ce.value=!0},nr=e=>{try{let t=JSON.parse(e);t.title&&(p.value=t.title),t.description&&(m.value=t.description),t.author&&(h.value=t.author),t.questions&&(b.value=t.questions),t.settings&&t.settings.showScore!==void 0&&(x.value=t.settings.showScore)}catch(e){console.error(`Version apply error:`,e)}},rr=async()=>{if(I.value){let e=z?.getMap(`_meta`);if(L.value||e?.get(`_closed`)===!0){L.value=!0,r.ElMessage.error(`协作已关闭,无法保存更新`);return}}if(b.value.length>0&&b.value.find(e=>!e.referenceAnswer||e.referenceAnswer.trim()===``||!e.scoringCriteria||e.scoringCriteria.trim()===``)){r.ElMessage.error(`请为所有题目填写参考答案和评分标准说明`);return}let e={title:p.value,description:m.value,author:h.value||l.user?.name||`user`,config:On(),status:g.value,begin_time:_.value,end_time:y.value,...I.value?{is_collab_user:!0}:{}};try{let t=d.value,n=typeof l.saveApi==`function`?l.saveApi:l.saveApi?e=>{let n=t?`${l.saveApi}/${t}`:l.saveApi;return t?i.default.put(n,e):i.default.post(n,e)}:null;if(n){let r=await n(e,t);w.value||(w.value=r.data?.id,l.docId||c.replace(`/questionnaire-editor/${r.data?.id}`))}else if(t){let n=await f.value.update(t,e);w.value||(w.value=n.data?.id||t,l.docId||c.replace(`/questionnaire-editor/${w.value}`))}else{let t=await f.value.create(e);w.value=t.data.id,l.docId||c.replace(`/questionnaire-editor/${t.data.id}`)}r.ElMessage.success(`保存成功`),le({documentId:w.value,docType:`questionnaire`,content:JSON.stringify({title:p.value,description:m.value,author:h.value||l.user?.name||`user`,questions:b.value,settings:{showScore:x.value}}),userId:String(A.currentUser.value?.id||``),userName:A.currentUser.value?.name||h.value||`未知`})}catch(e){r.ElMessage.error(`保存失败: `+(e.message||e))}},ir=()=>c.push(`/`),ar=async(e,t={})=>{let n=w.value?`${sn}-${w.value}`:null;await A.sendMessage(e,{...t,roomId:n});let r=t.mentionedUser,i=r&&r.toLowerCase().includes(`ai`),a=A.collabUsers.value.filter(e=>e.name!==A.currentUser.value.name);if(!r||i||a.length===0){A.loading.value=!0;let t=await se.chat(e,A.messages.value);A.sendAiMessage(t,n),A.loading.value=!1}},or=()=>{let e=w.value?`${sn}-${w.value}`:null;A.clearMessages(e)};return(0,e.onMounted)(()=>{er().then(()=>{if(w.value){un();let e=new URLSearchParams(window.location.search);e.get(`collab`)===`1`&&hn(),e.get(`ai`)===`1`&&(O.value=!0)}})}),(0,e.onBeforeUnmount)(()=>{fn(),B&&(B.disconnect(),B.destroy()),z&&z.destroy()}),(t,n)=>{let r=(0,e.resolveComponent)(`ArrowLeft`),i=(0,e.resolveComponent)(`el-icon`),a=(0,e.resolveComponent)(`el-button`),o=(0,e.resolveComponent)(`el-input`),s=(0,e.resolveComponent)(`el-option`),c=(0,e.resolveComponent)(`el-select`),l=(0,e.resolveComponent)(`el-date-picker`),d=(0,e.resolveComponent)(`el-divider`),f=(0,e.resolveComponent)(`Download`),v=(0,e.resolveComponent)(`Upload`),ee=(0,e.resolveComponent)(`Printer`),C=(0,e.resolveComponent)(`ArrowDown`),se=(0,e.resolveComponent)(`el-dropdown-item`),le=(0,e.resolveComponent)(`el-dropdown-menu`),M=(0,e.resolveComponent)(`el-dropdown`),me=(0,e.resolveComponent)(`Share`),P=(0,e.resolveComponent)(`Link`),ve=(0,e.resolveComponent)(`Promotion`),L=(0,e.resolveComponent)(`Message`),R=(0,e.resolveComponent)(`Cpu`),z=(0,e.resolveComponent)(`DataAnalysis`),be=(0,e.resolveComponent)(`List`),B=(0,e.resolveComponent)(`Monitor`),V=(0,e.resolveComponent)(`Check`),H=(0,e.resolveComponent)(`Clock`),xe=(0,e.resolveComponent)(`Setting`),sn=(0,e.resolveComponent)(`el-color-picker`),U=(0,e.resolveComponent)(`el-slider`),W=(0,e.resolveComponent)(`el-radio-button`),G=(0,e.resolveComponent)(`el-radio-group`),K=(0,e.resolveComponent)(`el-popover`),q=(0,e.resolveComponent)(`el-input-number`),J=(0,e.resolveComponent)(`el-switch`),cn=(0,e.resolveComponent)(`Delete`),ln=(0,e.resolveComponent)(`Top`),un=(0,e.resolveComponent)(`Bottom`),dn=(0,e.resolveComponent)(`PictureFilled`),fn=(0,e.resolveComponent)(`el-upload`),Y=(0,e.resolveComponent)(`Close`),pn=(0,e.resolveComponent)(`el-radio`),X=(0,e.resolveComponent)(`Plus`),hn=(0,e.resolveComponent)(`el-checkbox`),gn=(0,e.resolveComponent)(`el-tag`),Z=(0,e.resolveComponent)(`StarFilled`),Q=(0,e.resolveComponent)(`Switch`),_n=(0,e.resolveComponent)(`ArrowRight`),vn=(0,e.resolveComponent)(`Trophy`),yn=(0,e.resolveComponent)(`Document`),On=(0,e.resolveComponent)(`Edit`),kn=(0,e.resolveComponent)(`Select`),Pn=(0,e.resolveComponent)(`Finished`),Fn=(0,e.resolveComponent)(`Histogram`),Rn=(0,e.resolveComponent)(`Grid`),Jn=(0,e.resolveComponent)(`el-dialog`),Zn=(0,e.resolveComponent)(`Loading`),Qn=(0,e.resolveComponent)(`el-table-column`),er=(0,e.resolveComponent)(`el-link`),sr=(0,e.resolveComponent)(`el-table`);return(0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,[(0,e.createElementVNode)(`div`,Se,[(0,e.createElementVNode)(`div`,Ce,[(0,e.createElementVNode)(`div`,we,[u.value.backButton===`hide`?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(a,{key:0,onClick:ir,size:`small`,circle:``,disabled:u.value.backButton===`disable`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r)]),_:1})]),_:1},8,[`disabled`])),(0,e.createVNode)(o,{modelValue:p.value,"onUpdate:modelValue":n[0]||=e=>p.value=e,class:`title-input`,placeholder:`问卷标题 *`,size:`small`,style:{width:`200px`},disabled:I.value||!u.value.titleEditable},null,8,[`modelValue`,`disabled`]),(0,e.createVNode)(o,{modelValue:h.value,"onUpdate:modelValue":n[1]||=e=>h.value=e,class:`author-input`,placeholder:`作者 *`,size:`small`,style:{width:`140px`},disabled:!u.value.authorEditable},null,8,[`modelValue`,`disabled`])]),(0,e.createElementVNode)(`div`,Te,[I.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(c,{key:0,modelValue:g.value,"onUpdate:modelValue":n[2]||=e=>g.value=e,size:`small`,style:{width:`90px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`草稿`,value:`draft`}),(0,e.createVNode)(s,{label:`已发布`,value:`published`}),(0,e.createVNode)(s,{label:`已关闭`,value:`closed`})]),_:1},8,[`modelValue`])),I.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(l,{key:1,modelValue:_.value,"onUpdate:modelValue":n[3]||=e=>_.value=e,type:`datetime`,size:`small`,placeholder:`开始时间`,style:{width:`170px`}},null,8,[`modelValue`])),I.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(l,{key:2,modelValue:y.value,"onUpdate:modelValue":n[4]||=e=>y.value=e,type:`datetime`,size:`small`,placeholder:`结束时间`,style:{width:`170px`}},null,8,[`modelValue`])),(0,e.createVNode)(d,{direction:`vertical`}),I.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(a,{key:3,size:`small`,onClick:An,title:`导出JSON`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f)]),_:1})]),_:1})),I.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(a,{key:4,size:`small`,onClick:jn,title:`导入JSON`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v)]),_:1})]),_:1})),(0,e.createElementVNode)(`input`,{ref_key:`importInputRef`,ref:re,type:`file`,accept:`.json`,style:{display:`none`},onChange:Mn},null,544),I.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(d,{key:5,direction:`vertical`})),I.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(M,{key:6,trigger:`click`,onCommand:Nn},{dropdown:(0,e.withCtx)(()=>[(0,e.createVNode)(le,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(se,{command:`pdf`},{default:(0,e.withCtx)(()=>[...n[47]||=[(0,e.createTextVNode)(`导出 PDF`,-1)]]),_:1}),(0,e.createVNode)(se,{command:`word`},{default:(0,e.withCtx)(()=>[...n[48]||=[(0,e.createTextVNode)(`导出 Word`,-1)]]),_:1}),(0,e.createVNode)(se,{command:`html`},{default:(0,e.withCtx)(()=>[...n[49]||=[(0,e.createTextVNode)(`导出 HTML`,-1)]]),_:1}),(0,e.createVNode)(se,{command:`standalone`},{default:(0,e.withCtx)(()=>[...n[50]||=[(0,e.createTextVNode)(`独立 HTML 表单`,-1)]]),_:1})]),_:1})]),default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(ee)]),_:1}),n[46]||=(0,e.createTextVNode)(` 导出 `,-1),(0,e.createVNode)(i,{class:`el-icon--right`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(C)]),_:1})]),_:1})]),_:1})),I.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(d,{key:7,direction:`vertical`})),I.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(a,{key:8,size:`small`,type:F.value?`success`:`default`,onClick:mn},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(me)]),_:1}),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(F.value?`协作中`:`协作`),1)]),_:1},8,[`type`])),w.value&&F.value&&!I.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:9,size:`small`,circle:``,onClick:In,title:`分享协作编辑链接`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(P)]),_:1})]),_:1})):(0,e.createCommentVNode)(``,!0),w.value&&!I.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:10,size:`small`,circle:``,onClick:Ln,title:`分享填写链接`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(ve)]),_:1})]),_:1})):(0,e.createCommentVNode)(``,!0),w.value&&!I.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:11,size:`small`,type:`warning`,onClick:n[5]||=e=>ie.value=!0,title:`问卷分发`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(L)]),_:1}),n[51]||=(0,e.createTextVNode)(` 分发 `,-1)]),_:1})):(0,e.createCommentVNode)(``,!0),w.value&&!I.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:12,size:`small`,onClick:Yn,title:`AI分析`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(R)]),_:1}),n[52]||=(0,e.createElementVNode)(`span`,null,`AI`,-1)]),_:1})):(0,e.createCommentVNode)(``,!0),w.value&&!I.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:13,size:`small`,onClick:Un,title:`查看统计`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(z)]),_:1})]),_:1})):(0,e.createCommentVNode)(``,!0),w.value&&!I.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:14,size:`small`,onClick:Wn,title:`反馈列表`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(be)]),_:1})]),_:1})):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(a,{size:`small`,circle:``,type:oe.value?`primary`:`default`,onClick:n[6]||=e=>oe.value=!oe.value,title:`AI助手`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(B)]),_:1})]),_:1},8,[`type`]),(0,e.createVNode)(a,{size:`small`,type:`primary`,onClick:rr},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(V)]),_:1}),n[53]||=(0,e.createTextVNode)(` 保存`,-1)]),_:1}),w.value?((0,e.openBlock)(),(0,e.createBlock)(a,{key:15,size:`small`,circle:``,title:`更新履历`,onClick:tr},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(H)]),_:1})]),_:1})):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`div`,Ee,[(0,e.createElementVNode)(`div`,De,[(0,e.createElementVNode)(`div`,{class:`q-header-card`,style:(0,e.normalizeStyle)({background:T.backgroundColor,"--header-font":T.headerFont,"--header-font-size":T.headerFontSize+`px`,"--header-font-style":T.headerFontStyle,"--header-color":T.headerColor,"--title-align":T.titleAlign,"--title-font":T.titleFont,"--title-font-style":T.titleFontStyle,"--title-font-size":T.titleFontSize+`px`,"--title-color":T.titleColor,"--desc-align":T.descAlign,"--desc-font":T.descFont,"--desc-font-style":T.descFontStyle,"--desc-font-size":T.descFontSize+`px`,"--desc-color":T.descColor})},[(0,e.createElementVNode)(`div`,Oe,[(0,e.createVNode)(o,{modelValue:p.value,"onUpdate:modelValue":n[7]||=e=>p.value=e,placeholder:`请输入问卷标题`,class:`q-title-input`},null,8,[`modelValue`]),(0,e.createVNode)(K,{placement:`right`,width:320,trigger:`click`},{reference:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{size:`small`,circle:``,class:`q-header-setting-btn`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(xe)]),_:1})]),_:1})]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,ke,[(0,e.createElementVNode)(`div`,Ae,[n[54]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`背景颜色`,-1),(0,e.createVNode)(sn,{modelValue:T.backgroundColor,"onUpdate:modelValue":n[8]||=e=>T.backgroundColor=e,size:`small`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,je,[n[55]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字体`,-1),(0,e.createVNode)(c,{modelValue:T.headerFont,"onUpdate:modelValue":n[9]||=e=>T.headerFont=e,size:`small`,style:{width:`120px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`默认`,value:`inherit`}),(0,e.createVNode)(s,{label:`宋体`,value:`SimSun, serif`}),(0,e.createVNode)(s,{label:`黑体`,value:`SimHei, sans-serif`}),(0,e.createVNode)(s,{label:`微软雅黑`,value:`Microsoft YaHei, sans-serif`}),(0,e.createVNode)(s,{label:`楷体`,value:`KaiTi, serif`}),(0,e.createVNode)(s,{label:`Arial`,value:`Arial, sans-serif`}),(0,e.createVNode)(s,{label:`Times New Roman`,value:`Times New Roman, serif`})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Me,[n[56]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字号`,-1),(0,e.createVNode)(U,{modelValue:T.headerFontSize,"onUpdate:modelValue":n[10]||=e=>T.headerFontSize=e,min:10,max:24,step:1,"show-input":``,size:`small`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Ne,[n[59]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`样式`,-1),(0,e.createVNode)(G,{modelValue:T.headerFontStyle,"onUpdate:modelValue":n[11]||=e=>T.headerFontStyle=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(W,{value:`normal`},{default:(0,e.withCtx)(()=>[...n[57]||=[(0,e.createTextVNode)(`常规`,-1)]]),_:1}),(0,e.createVNode)(W,{value:`italic`},{default:(0,e.withCtx)(()=>[...n[58]||=[(0,e.createTextVNode)(`斜体`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Pe,[n[60]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`颜色`,-1),(0,e.createVNode)(sn,{modelValue:T.headerColor,"onUpdate:modelValue":n[12]||=e=>T.headerColor=e,size:`small`},null,8,[`modelValue`])]),(0,e.createVNode)(d),n[81]||=(0,e.createElementVNode)(`div`,{class:`q-settings-section-title`},`标题样式`,-1),(0,e.createElementVNode)(`div`,Fe,[n[64]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`对齐`,-1),(0,e.createVNode)(G,{modelValue:T.titleAlign,"onUpdate:modelValue":n[13]||=e=>T.titleAlign=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(W,{value:`left`},{default:(0,e.withCtx)(()=>[...n[61]||=[(0,e.createTextVNode)(`左`,-1)]]),_:1}),(0,e.createVNode)(W,{value:`center`},{default:(0,e.withCtx)(()=>[...n[62]||=[(0,e.createTextVNode)(`中`,-1)]]),_:1}),(0,e.createVNode)(W,{value:`right`},{default:(0,e.withCtx)(()=>[...n[63]||=[(0,e.createTextVNode)(`右`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Ie,[n[65]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字体`,-1),(0,e.createVNode)(c,{modelValue:T.titleFont,"onUpdate:modelValue":n[14]||=e=>T.titleFont=e,size:`small`,style:{width:`120px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`默认`,value:`inherit`}),(0,e.createVNode)(s,{label:`宋体`,value:`SimSun, serif`}),(0,e.createVNode)(s,{label:`黑体`,value:`SimHei, sans-serif`}),(0,e.createVNode)(s,{label:`微软雅黑`,value:`Microsoft YaHei, sans-serif`}),(0,e.createVNode)(s,{label:`楷体`,value:`KaiTi, serif`}),(0,e.createVNode)(s,{label:`Arial`,value:`Arial, sans-serif`}),(0,e.createVNode)(s,{label:`Times New Roman`,value:`Times New Roman, serif`})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Le,[n[68]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`样式`,-1),(0,e.createVNode)(G,{modelValue:T.titleFontStyle,"onUpdate:modelValue":n[15]||=e=>T.titleFontStyle=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(W,{value:`normal`},{default:(0,e.withCtx)(()=>[...n[66]||=[(0,e.createTextVNode)(`常规`,-1)]]),_:1}),(0,e.createVNode)(W,{value:`italic`},{default:(0,e.withCtx)(()=>[...n[67]||=[(0,e.createTextVNode)(`斜体`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Re,[n[69]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字号`,-1),(0,e.createVNode)(U,{modelValue:T.titleFontSize,"onUpdate:modelValue":n[16]||=e=>T.titleFontSize=e,min:12,max:40,step:1,"show-input":``,size:`small`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,ze,[n[70]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`颜色`,-1),(0,e.createVNode)(sn,{modelValue:T.titleColor,"onUpdate:modelValue":n[17]||=e=>T.titleColor=e,size:`small`},null,8,[`modelValue`])]),(0,e.createVNode)(d),n[82]||=(0,e.createElementVNode)(`div`,{class:`q-settings-section-title`},`说明样式`,-1),(0,e.createElementVNode)(`div`,Be,[n[74]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`对齐`,-1),(0,e.createVNode)(G,{modelValue:T.descAlign,"onUpdate:modelValue":n[18]||=e=>T.descAlign=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(W,{value:`left`},{default:(0,e.withCtx)(()=>[...n[71]||=[(0,e.createTextVNode)(`左`,-1)]]),_:1}),(0,e.createVNode)(W,{value:`center`},{default:(0,e.withCtx)(()=>[...n[72]||=[(0,e.createTextVNode)(`中`,-1)]]),_:1}),(0,e.createVNode)(W,{value:`right`},{default:(0,e.withCtx)(()=>[...n[73]||=[(0,e.createTextVNode)(`右`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Ve,[n[75]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字体`,-1),(0,e.createVNode)(c,{modelValue:T.descFont,"onUpdate:modelValue":n[19]||=e=>T.descFont=e,size:`small`,style:{width:`120px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`默认`,value:`inherit`}),(0,e.createVNode)(s,{label:`宋体`,value:`SimSun, serif`}),(0,e.createVNode)(s,{label:`黑体`,value:`SimHei, sans-serif`}),(0,e.createVNode)(s,{label:`微软雅黑`,value:`Microsoft YaHei, sans-serif`}),(0,e.createVNode)(s,{label:`楷体`,value:`KaiTi, serif`}),(0,e.createVNode)(s,{label:`Arial`,value:`Arial, sans-serif`}),(0,e.createVNode)(s,{label:`Times New Roman`,value:`Times New Roman, serif`})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,He,[n[78]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`样式`,-1),(0,e.createVNode)(G,{modelValue:T.descFontStyle,"onUpdate:modelValue":n[20]||=e=>T.descFontStyle=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(W,{value:`normal`},{default:(0,e.withCtx)(()=>[...n[76]||=[(0,e.createTextVNode)(`常规`,-1)]]),_:1}),(0,e.createVNode)(W,{value:`italic`},{default:(0,e.withCtx)(()=>[...n[77]||=[(0,e.createTextVNode)(`斜体`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Ue,[n[79]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`字号`,-1),(0,e.createVNode)(U,{modelValue:T.descFontSize,"onUpdate:modelValue":n[21]||=e=>T.descFontSize=e,min:10,max:24,step:1,"show-input":``,size:`small`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,We,[n[80]||=(0,e.createElementVNode)(`span`,{class:`q-settings-label`},`颜色`,-1),(0,e.createVNode)(sn,{modelValue:T.descColor,"onUpdate:modelValue":n[22]||=e=>T.descColor=e,size:`small`},null,8,[`modelValue`])])])]),_:1})]),(0,e.createVNode)(o,{modelValue:m.value,"onUpdate:modelValue":n[23]||=e=>m.value=e,type:`textarea`,rows:2,placeholder:`问卷说明(选填)`,class:`q-desc-input`},null,8,[`modelValue`]),(0,e.createElementVNode)(`div`,Ge,[(0,e.createElementVNode)(`div`,Ke,[n[83]||=(0,e.createElementVNode)(`span`,null,`及格分:`,-1),(0,e.createVNode)(q,{modelValue:te.value,"onUpdate:modelValue":n[24]||=e=>te.value=e,min:0,size:`small`},null,8,[`modelValue`]),(0,e.createElementVNode)(`span`,qe,`总分:`+(0,e.toDisplayString)(_e.value)+`分`,1)]),(0,e.createElementVNode)(`div`,Je,[n[84]||=(0,e.createElementVNode)(`span`,null,`立刻给出评分:`,-1),(0,e.createVNode)(J,{modelValue:x.value,"onUpdate:modelValue":n[25]||=e=>x.value=e,size:`small`,"active-text":`是`,"inactive-text":`否`},null,8,[`modelValue`]),n[85]||=(0,e.createElementVNode)(`span`,{class:`q-show-score-tip`},`(选"否"则提交时不显示得分)`,-1)])])],4),(0,e.createElementVNode)(`div`,Ye,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(b.value,(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id,class:(0,e.normalizeClass)([`q-card`,{active:ne.value===t.id}]),onClick:e=>ne.value=t.id,draggable:`true`,onDragstart:e=>Tn(r,e),onDragover:(0,e.withModifiers)(e=>En(r,e),[`prevent`]),onDrop:e=>Dn(r,e)},[(0,e.createElementVNode)(`div`,Ze,[(0,e.createVNode)(a,{size:`small`,circle:``,onClick:(0,e.withModifiers)(e=>Gn(r),[`stop`]),title:`AI生成题目`,class:`ai-gen-btn`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(R)]),_:1})]),_:1},8,[`onClick`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:(0,e.withModifiers)(e=>bn(r),[`stop`]),title:`删除`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(cn)]),_:1})]),_:1},8,[`onClick`])]),(0,e.createElementVNode)(`div`,Qe,[(0,e.createElementVNode)(`span`,$e,(0,e.toDisplayString)(r+1)+`.`,1),(0,e.createVNode)(o,{modelValue:t.title,"onUpdate:modelValue":e=>t.title=e,placeholder:`请输入题目标题`,size:`small`,class:`q-title`},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createElementVNode)(`div`,et,[(0,e.createVNode)(a,{size:`small`,circle:``,onClick:(0,e.withModifiers)(e=>xn(r,-1),[`stop`]),disabled:r===0,title:`上移`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(ln)]),_:1})]),_:1},8,[`onClick`,`disabled`]),(0,e.createVNode)(a,{size:`small`,circle:``,onClick:(0,e.withModifiers)(e=>xn(r,1),[`stop`]),disabled:r===b.value.length-1,title:`下移`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(un)]),_:1})]),_:1},8,[`onClick`,`disabled`]),(0,e.createVNode)(J,{modelValue:t.required,"onUpdate:modelValue":e=>t.required=e,size:`small`,"active-text":`必填`,onClick:n[26]||=(0,e.withModifiers)(()=>{},[`stop`]),style:{"margin-left":`8px`}},null,8,[`modelValue`,`onUpdate:modelValue`])])]),(0,e.createElementVNode)(`div`,tt,[(0,e.createElementVNode)(`div`,nt,[(0,e.createVNode)(o,{modelValue:t.description,"onUpdate:modelValue":e=>t.description=e,placeholder:`题目说明(选填)`,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`])]),(0,e.createElementVNode)(`div`,rt,[(0,e.createVNode)(fn,{"show-file-list":!1,"before-upload":e=>wn(t,e),accept:`image/*`,class:`q-img-upload`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{size:`small`,circle:``},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(dn)]),_:1})]),_:1})]),_:1},8,[`before-upload`]),t.image?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,it,[(0,e.createElementVNode)(`img`,{src:t.image},null,8,at),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,class:`q-img-remove`,onClick:e=>t.image=``},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Y)]),_:1})]),_:1},8,[`onClick`])])):(0,e.createCommentVNode)(``,!0)]),t.type===`text`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ot,[(0,e.createVNode)(o,{modelValue:t.placeholder,"onUpdate:modelValue":e=>t.placeholder=e,placeholder:`回答提示文字`,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(c,{modelValue:t.textType,"onUpdate:modelValue":e=>t.textType=e,size:`small`,style:{width:`120px`,"margin-left":`8px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`单行文本`,value:`single`}),(0,e.createVNode)(s,{label:`多行文本`,value:`multi`})]),_:1},8,[`modelValue`,`onUpdate:modelValue`])])):(0,e.createCommentVNode)(``,!0),t.type===`radio`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,st,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`q-option-item`},[(0,e.createVNode)(pn,{"model-value":0,disabled:``}),(0,e.createVNode)(o,{modelValue:t.options[r],"onUpdate:modelValue":e=>t.options[r]=e,size:`small`,placeholder:`选项`,style:{flex:`1`}},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:e=>Cn(t,r)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Y)]),_:1})]),_:1},8,[`onClick`])]))),128)),(0,e.createVNode)(a,{size:`small`,onClick:e=>Sn(t)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(X)]),_:1}),n[86]||=(0,e.createTextVNode)(` 添加选项`,-1)]),_:1},8,[`onClick`])])):(0,e.createCommentVNode)(``,!0),t.type===`checkbox`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ct,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`q-option-item`},[(0,e.createVNode)(hn,{disabled:``}),(0,e.createVNode)(o,{modelValue:t.options[r],"onUpdate:modelValue":e=>t.options[r]=e,size:`small`,placeholder:`选项`,style:{flex:`1`}},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:e=>Cn(t,r)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Y)]),_:1})]),_:1},8,[`onClick`])]))),128)),(0,e.createVNode)(a,{size:`small`,onClick:e=>Sn(t)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(X)]),_:1}),n[87]||=(0,e.createTextVNode)(` 添加选项`,-1)]),_:1},8,[`onClick`])])):(0,e.createCommentVNode)(``,!0),t.type===`select`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,lt,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`q-option-item`},[(0,e.createVNode)(gn,{size:`small`,type:`info`},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(r+1),1)]),_:2},1024),(0,e.createVNode)(o,{modelValue:t.options[r],"onUpdate:modelValue":e=>t.options[r]=e,size:`small`,placeholder:`选项`,style:{flex:`1`}},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:e=>Cn(t,r)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Y)]),_:1})]),_:1},8,[`onClick`])]))),128)),(0,e.createVNode)(a,{size:`small`,onClick:e=>Sn(t)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(X)]),_:1}),n[88]||=(0,e.createTextVNode)(` 添加选项`,-1)]),_:1},8,[`onClick`])])):(0,e.createCommentVNode)(``,!0),t.type===`rating`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ut,[(0,e.createElementVNode)(`div`,dt,[n[91]||=(0,e.createElementVNode)(`span`,null,`最大分值:`,-1),(0,e.createVNode)(q,{modelValue:t.maxRating,"onUpdate:modelValue":e=>t.maxRating=e,min:3,max:10,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`]),n[92]||=(0,e.createElementVNode)(`span`,{style:{"margin-left":`16px`}},`图标:`,-1),(0,e.createVNode)(G,{modelValue:t.ratingIcon,"onUpdate:modelValue":e=>t.ratingIcon=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(W,{label:`star`},{default:(0,e.withCtx)(()=>[...n[89]||=[(0,e.createTextVNode)(`星形`,-1)]]),_:1}),(0,e.createVNode)(W,{label:`heart`},{default:(0,e.withCtx)(()=>[...n[90]||=[(0,e.createTextVNode)(`心形`,-1)]]),_:1})]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]),(0,e.createElementVNode)(`div`,ft,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.maxRating||5,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:n,class:`rating-icon`,onClick:e=>t._preview=n},[(0,e.createVNode)(i,{size:20,class:(0,e.normalizeClass)({active:n<=(t._preview||0)})},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Z)]),_:1},8,[`class`])],8,pt))),128))])])):(0,e.createCommentVNode)(``,!0),t.type===`scale`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,mt,[(0,e.createElementVNode)(`div`,ht,[(0,e.createVNode)(o,{modelValue:t.scaleMinLabel,"onUpdate:modelValue":e=>t.scaleMinLabel=e,size:`small`,placeholder:`最低标签`,style:{width:`120px`}},null,8,[`modelValue`,`onUpdate:modelValue`]),n[93]||=(0,e.createElementVNode)(`span`,null,`← 量表 →`,-1),(0,e.createVNode)(o,{modelValue:t.scaleMaxLabel,"onUpdate:modelValue":e=>t.scaleMaxLabel=e,size:`small`,placeholder:`最高标签`,style:{width:`120px`}},null,8,[`modelValue`,`onUpdate:modelValue`]),n[94]||=(0,e.createElementVNode)(`span`,{style:{"margin-left":`12px`}},`刻度数:`,-1),(0,e.createVNode)(q,{modelValue:t.scaleCount,"onUpdate:modelValue":e=>t.scaleCount=e,min:5,max:10,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`])]),(0,e.createElementVNode)(`div`,gt,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.scaleCount||7,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t,class:`scale-dot`},[n[95]||=(0,e.createElementVNode)(`div`,{class:`dot`},null,-1),(0,e.createElementVNode)(`span`,_t,(0,e.toDisplayString)(t),1)]))),128))])])):(0,e.createCommentVNode)(``,!0),t.type===`matrix`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,vt,[(0,e.createElementVNode)(`div`,yt,[(0,e.createElementVNode)(`div`,bt,[n[97]||=(0,e.createElementVNode)(`span`,{class:`label`},`行标题:`,-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.matrixRows,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`q-option-item`},[(0,e.createVNode)(o,{modelValue:t.matrixRows[r],"onUpdate:modelValue":e=>t.matrixRows[r]=e,size:`small`,placeholder:`行标题`,style:{flex:`1`}},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:e=>t.matrixRows.splice(r,1)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Y)]),_:1})]),_:1},8,[`onClick`])]))),128)),(0,e.createVNode)(a,{size:`small`,onClick:e=>t.matrixRows.push(``)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(X)]),_:1}),n[96]||=(0,e.createTextVNode)(` 添加行`,-1)]),_:1},8,[`onClick`])]),(0,e.createElementVNode)(`div`,xt,[n[99]||=(0,e.createElementVNode)(`span`,{class:`label`},`列标题:`,-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.matrixCols,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`q-option-item`},[(0,e.createVNode)(o,{modelValue:t.matrixCols[r],"onUpdate:modelValue":e=>t.matrixCols[r]=e,size:`small`,placeholder:`列标题`,style:{flex:`1`}},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(a,{size:`small`,circle:``,type:`danger`,onClick:e=>t.matrixCols.splice(r,1)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Y)]),_:1})]),_:1},8,[`onClick`])]))),128)),(0,e.createVNode)(a,{size:`small`,onClick:e=>t.matrixCols.push(``)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(X)]),_:1}),n[98]||=(0,e.createTextVNode)(` 添加列`,-1)]),_:1},8,[`onClick`])])]),t.matrixRows.length&&t.matrixCols.length?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,St,[(0,e.createElementVNode)(`table`,Ct,[(0,e.createElementVNode)(`thead`,null,[(0,e.createElementVNode)(`tr`,null,[n[100]||=(0,e.createElementVNode)(`th`,null,null,-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.matrixCols,(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:n},(0,e.toDisplayString)(t||`列${n+1}`),1))),128))])]),(0,e.createElementVNode)(`tbody`,null,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.matrixRows,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,{key:r},[(0,e.createElementVNode)(`td`,null,(0,e.toDisplayString)(n||`行${r+1}`),1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.matrixCols,(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:n},[(0,e.createVNode)(pn,{disabled:``})]))),128))]))),128))])])])):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),t.type===`image`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,wt,[(0,e.createVNode)(o,{modelValue:t.imageQuestionText,"onUpdate:modelValue":e=>t.imageQuestionText=e,placeholder:`请输入图片相关说明文字`,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`])])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,Tt,[(0,e.createElementVNode)(`div`,Et,[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Q)]),_:1}),n[101]||=(0,e.createElementVNode)(`span`,null,`跳转逻辑`,-1)]),(0,e.createElementVNode)(`div`,Dt,[n[102]||=(0,e.createElementVNode)(`span`,{class:`skip-label`},`默认跳转:`,-1),(0,e.createVNode)(c,{modelValue:t.skipTo,"onUpdate:modelValue":e=>t.skipTo=e,size:`small`,clearable:``,placeholder:`下一题(默认)`,style:{width:`200px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`下一题(默认)`,value:``}),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(b.value,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(s,{key:t.id,label:`${n+1}. ${t.title||`未命名`}`,value:t.id},null,8,[`label`,`value`]))),128)),(0,e.createVNode)(s,{label:`结束问卷`,value:`__END__`})]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]),[`radio`,`checkbox`,`select`].includes(t.type)?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ot,[n[103]||=(0,e.createElementVNode)(`div`,{class:`skip-rules-title`},`按选项跳转:`,-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options||[],(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`skip-rule-row`},[(0,e.createElementVNode)(`span`,kt,(0,e.toDisplayString)(n),1),(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(_n)]),_:1}),(0,e.createVNode)(c,{modelValue:t.optionSkipTo[r],"onUpdate:modelValue":e=>t.optionSkipTo[r]=e,size:`small`,clearable:``,placeholder:`默认`,style:{width:`180px`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{label:`默认(下一题)`,value:``}),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(b.value,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(s,{key:t.id,label:`${n+1}. ${t.title||`未命名`}`,value:t.id},null,8,[`label`,`value`]))),128)),(0,e.createVNode)(s,{label:`结束问卷`,value:`__END__`})]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]))),128))])):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,At,[(0,e.createElementVNode)(`div`,jt,[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(vn)]),_:1}),n[104]||=(0,e.createElementVNode)(`span`,null,`计分设置`,-1)]),(0,e.createElementVNode)(`div`,Mt,[n[105]||=(0,e.createElementVNode)(`span`,{class:`score-label`},`本题分值:`,-1),(0,e.createVNode)(q,{modelValue:t.score,"onUpdate:modelValue":e=>t.score=e,min:0,max:100,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`])]),[`radio`,`checkbox`,`select`].includes(t.type)?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Nt,[n[106]||=(0,e.createElementVNode)(`div`,{class:`score-options-title`},`各选项分值(-1表示不计分):`,-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options||[],(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:`score-option-row`},[(0,e.createElementVNode)(`span`,Pt,(0,e.toDisplayString)(n),1),(0,e.createVNode)(q,{modelValue:t.optionScore[r],"onUpdate:modelValue":e=>t.optionScore[r]=e,min:-1,max:100,size:`small`,style:{width:`120px`}},null,8,[`modelValue`,`onUpdate:modelValue`])]))),128))])):(0,e.createCommentVNode)(``,!0),t.type===`rating`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ft,[n[107]||=(0,e.createElementVNode)(`span`,{class:`score-label`},`评分即得分:`,-1),(0,e.createVNode)(J,{modelValue:t.ratingAsScore,"onUpdate:modelValue":e=>t.ratingAsScore=e,size:`small`,"active-text":`是`,"inactive-text":`否`},null,8,[`modelValue`,`onUpdate:modelValue`])])):(0,e.createCommentVNode)(``,!0),t.type===`scale`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,It,[n[108]||=(0,e.createElementVNode)(`span`,{class:`score-label`},`量表即得分:`,-1),(0,e.createVNode)(J,{modelValue:t.scaleAsScore,"onUpdate:modelValue":e=>t.scaleAsScore=e,size:`small`,"active-text":`是`,"inactive-text":`否`},null,8,[`modelValue`,`onUpdate:modelValue`])])):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,Lt,[(0,e.createElementVNode)(`div`,Rt,[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(yn)]),_:1}),n[109]||=(0,e.createElementVNode)(`span`,null,`评分说明`,-1),n[110]||=(0,e.createElementVNode)(`span`,{class:`required-mark`},`*`,-1)]),(0,e.createElementVNode)(`div`,zt,[n[111]||=(0,e.createElementVNode)(`label`,{class:`scoring-guide-label`},`参考答案`,-1),(0,e.createVNode)(o,{modelValue:t.referenceAnswer,"onUpdate:modelValue":e=>t.referenceAnswer=e,type:`textarea`,rows:3,placeholder:`请输入本题的参考答案(必填)`,class:(0,e.normalizeClass)({"is-error":!t.referenceAnswer})},null,8,[`modelValue`,`onUpdate:modelValue`,`class`])]),(0,e.createElementVNode)(`div`,Bt,[n[112]||=(0,e.createElementVNode)(`label`,{class:`scoring-guide-label`},`评分标准说明`,-1),(0,e.createVNode)(o,{modelValue:t.scoringCriteria,"onUpdate:modelValue":e=>t.scoringCriteria=e,type:`textarea`,rows:3,placeholder:`请输入评分标准和扣分规则(必填)`,class:(0,e.normalizeClass)({"is-error":!t.scoringCriteria})},null,8,[`modelValue`,`onUpdate:modelValue`,`class`])]),!t.referenceAnswer||!t.scoringCriteria?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Vt,`参考答案和评分标准说明均为必填项`)):(0,e.createCommentVNode)(``,!0)])])],42,Xe))),128))],512),(0,e.createElementVNode)(`div`,Ht,[(0,e.createElementVNode)(`div`,Ut,[(0,e.createVNode)(a,{type:`primary`,plain:``,onClick:n[27]||=e=>S.value=!S.value},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(X)]),_:1}),n[113]||=(0,e.createTextVNode)(` 添加题目 `,-1)]),_:1}),S.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`q-add-overlay`,onClick:n[28]||=e=>S.value=!1})):(0,e.createCommentVNode)(``,!0),S.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,class:(0,e.normalizeClass)([`q-add-menu`,b.value.length===0?`menu-right`:`menu-top`])},[(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[29]||=e=>$(`text`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(On)]),_:1}),n[114]||=(0,e.createTextVNode)(` 文本题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[30]||=e=>$(`radio`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(kn)]),_:1}),n[115]||=(0,e.createTextVNode)(` 单选题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[31]||=e=>$(`checkbox`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Pn)]),_:1}),n[116]||=(0,e.createTextVNode)(` 多选题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[32]||=e=>$(`select`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(C)]),_:1}),n[117]||=(0,e.createTextVNode)(` 下拉题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[33]||=e=>$(`rating`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Z)]),_:1}),n[118]||=(0,e.createTextVNode)(` 评分题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[34]||=e=>$(`scale`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Fn)]),_:1}),n[119]||=(0,e.createTextVNode)(` 量表题`,-1)]),(0,e.createElementVNode)(`div`,{class:`menu-item`,onClick:n[35]||=e=>$(`matrix`)},[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Rn)]),_:1}),n[120]||=(0,e.createTextVNode)(` 矩阵题`,-1)])],2)):(0,e.createCommentVNode)(``,!0)])])],512)])]),(0,e.createVNode)(Jn,{modelValue:ue.value,"onUpdate:modelValue":n[38]||=e=>ue.value=e,title:`AI生成题目`,width:`600px`,top:`10vh`},{footer:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{onClick:n[37]||=e=>ue.value=!1},{default:(0,e.withCtx)(()=>[...n[126]||=[(0,e.createTextVNode)(`取消`,-1)]]),_:1}),(0,e.createVNode)(a,{type:`primary`,onClick:qn,loading:de.value},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(R)]),_:1}),n[127]||=(0,e.createTextVNode)(` 生成题目 `,-1)]),_:1},8,[`loading`])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,Wt,[(0,e.createElementVNode)(`div`,Gt,[(0,e.createElementVNode)(`label`,null,[n[121]||=(0,e.createTextVNode)(`当前题型:`,-1),(0,e.createElementVNode)(`span`,Kt,(0,e.toDisplayString)(ge(N.value)),1)])]),(0,e.createElementVNode)(`div`,qt,[n[122]||=(0,e.createElementVNode)(`label`,null,`请输入生成要求:`,-1),(0,e.createVNode)(o,{modelValue:fe.value,"onUpdate:modelValue":n[36]||=e=>fe.value=e,type:`textarea`,rows:4,placeholder:`例如:请生成一道关于JavaScript基础的单选题,考察变量声明的概念`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Jt,[n[125]||=(0,e.createElementVNode)(`label`,null,`上传参考附件(可选):`,-1),(0,e.createVNode)(fn,{ref_key:`aiGenUploadRef`,ref:he,"auto-upload":!1,"on-change":Kn,"file-list":j.value,accept:`.txt,.pdf,.doc,.docx,.md`,limit:5},{tip:(0,e.withCtx)(()=>[...n[124]||=[(0,e.createElementVNode)(`div`,{class:`el-upload__tip`},`支持 txt/pdf/doc/docx/md 格式,最多5个文件`,-1)]]),default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{size:`small`,type:`primary`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v)]),_:1}),n[123]||=(0,e.createTextVNode)(` 选择文件 `,-1)]),_:1})]),_:1},8,[`file-list`])])])]),_:1},8,[`modelValue`]),(0,e.createVNode)(Jn,{modelValue:O.value,"onUpdate:modelValue":n[40]||=e=>O.value=e,title:`AI智能分析`,width:`800px`,top:`5vh`},{footer:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{onClick:n[39]||=e=>O.value=!1},{default:(0,e.withCtx)(()=>[...n[132]||=[(0,e.createTextVNode)(`关闭`,-1)]]),_:1}),(0,e.createVNode)(a,{type:`primary`,onClick:Xn,loading:ae.value},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(R)]),_:1}),n[133]||=(0,e.createTextVNode)(` 开始分析 `,-1)]),_:1},8,[`loading`])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,Yt,[ae.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Xt,[(0,e.createVNode)(i,{class:`is-loading`,size:40},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Zn)]),_:1}),n[128]||=(0,e.createElementVNode)(`p`,null,`正在分析问卷数据...`,-1)])):k.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Zt,[(0,e.createElementVNode)(`div`,Qt,[n[130]||=(0,e.createElementVNode)(`h3`,null,`分析结果`,-1),(0,e.createVNode)(a,{size:`small`,type:`primary`,onClick:$n},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f)]),_:1}),n[129]||=(0,e.createTextVNode)(` 下载HTML报告 `,-1)]),_:1})]),(0,e.createElementVNode)(`div`,{class:`ai-result-content`,innerHTML:k.value},null,8,$t)])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,en,[...n[131]||=[(0,e.createElementVNode)(`p`,null,`点击"开始分析"按钮,AI将对问卷数据进行智能分析`,-1)]]))])]),_:1},8,[`modelValue`]),(0,e.createVNode)(Jn,{modelValue:ie.value,"onUpdate:modelValue":n[42]||=e=>ie.value=e,title:`问卷分发`,width:`680px`,top:`5vh`},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,tn,[n[138]||=(0,e.createElementVNode)(`p`,{class:`distribute-desc`},`输入邮箱地址,系统将为每个邮箱生成唯一填写链接。支持手动输入或导入Excel。`,-1),(0,e.createElementVNode)(`div`,nn,[(0,e.createVNode)(o,{modelValue:E.value,"onUpdate:modelValue":n[41]||=e=>E.value=e,type:`textarea`,rows:6,placeholder:`请输入邮箱地址,每行一个,支持逗号分隔
246
246
  例:
247
247
  user1@example.com
248
- user2@example.com`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,Zt,[(0,e.createVNode)(un,{"show-file-list":!1,"before-upload":An,accept:`.xlsx,.xls,.csv`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(j)]),_:1}),n[134]||=(0,e.createTextVNode)(` 导入Excel/CSV`,-1)]),_:1})]),_:1}),(0,e.createVNode)(a,{size:`small`,type:`primary`,onClick:jn},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(z)]),_:1}),n[135]||=(0,e.createTextVNode)(` 生成链接 `,-1)]),_:1})]),w.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Qt,[(0,e.createElementVNode)(`div`,$t,[(0,e.createElementVNode)(`span`,null,`已生成 `+(0,e.toDisplayString)(w.value.length)+` 条链接`,1),(0,e.createVNode)(a,{size:`small`,type:`success`,onClick:Nn},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(A)]),_:1}),n[136]||=(0,e.createTextVNode)(` 下载Excel `,-1)]),_:1})]),(0,e.createVNode)(or,{data:w.value,size:`small`,"max-height":`300`,stripe:``},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(ir,{prop:`email`,label:`邮箱`,"min-width":`200`}),(0,e.createVNode)(ir,{label:`填写链接`,"min-width":`300`},{default:(0,e.withCtx)(({row:t})=>[(0,e.createVNode)(ar,{type:`primary`,underline:!1,onClick:e=>Mn(t.url)},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(t.url),1)]),_:2},1032,[`onClick`])]),_:1}),(0,e.createVNode)(ir,{label:`操作`,width:`70`,align:`center`},{default:(0,e.withCtx)(({row:t})=>[(0,e.createVNode)(a,{size:`small`,type:`primary`,link:``,onClick:e=>Mn(t.url)},{default:(0,e.withCtx)(()=>[...n[137]||=[(0,e.createTextVNode)(`复制`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])])):(0,e.createCommentVNode)(``,!0)])]),_:1},8,[`modelValue`]),(0,e.createVNode)(de,{visible:re.value,messages:(0,e.unref)(E).messages.value,loading:(0,e.unref)(E).loading.value,"is-collab":(0,e.unref)(E).isCollabMode.value,"collab-users":(0,e.unref)(E).collabUsers.value,"current-user":(0,e.unref)(E).currentUser.value,"is-owner":!N.value,onSend:Zn,onClose:n[43]||=e=>re.value=!1,"unread-mention":(0,e.unref)(E).unreadMention.value,onClearUnread:n[44]||=t=>(0,e.unref)(E).clearUnreadMention(),onClear:Qn},null,8,[`visible`,`messages`,`loading`,`is-collab`,`collab-users`,`current-user`,`is-owner`,`unread-mention`]),(0,e.createVNode)(me,{modelValue:ie.value,"onUpdate:modelValue":n[45]||=e=>ie.value=e,"document-id":b.value,onApply:qn},null,8,[`modelValue`,`document-id`])],64)}}},[[`__scopeId`,`data-v-edacd7c2`]]);return(0,e.defineComponent)({name:`YourCompanyQuestionnaire`,props:{docId:{type:[Number,String],default:null},apiBase:{type:String,default:`/api`},wsUrl:{type:String,default:``},user:{type:Object,default:()=>({id:``,name:``,color:``})},roomId:{type:String,default:``}},setup(n,{slots:r}){return()=>(0,e.h)(`div`,{class:`yourcompany-questionnaire-wrapper`,style:`position:relative`},[(0,e.h)(V,{...n}),(0,e.h)(t.BrandWatermark)])}})});
248
+ user2@example.com`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`div`,rn,[(0,e.createVNode)(fn,{"show-file-list":!1,"before-upload":zn,accept:`.xlsx,.xls,.csv`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v)]),_:1}),n[134]||=(0,e.createTextVNode)(` 导入Excel/CSV`,-1)]),_:1})]),_:1}),(0,e.createVNode)(a,{size:`small`,type:`primary`,onClick:Bn},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(P)]),_:1}),n[135]||=(0,e.createTextVNode)(` 生成链接 `,-1)]),_:1})]),D.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,an,[(0,e.createElementVNode)(`div`,on,[(0,e.createElementVNode)(`span`,null,`已生成 `+(0,e.toDisplayString)(D.value.length)+` 条链接`,1),(0,e.createVNode)(a,{size:`small`,type:`success`,onClick:Hn},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(i,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f)]),_:1}),n[136]||=(0,e.createTextVNode)(` 下载Excel `,-1)]),_:1})]),(0,e.createVNode)(sr,{data:D.value,size:`small`,"max-height":`300`,stripe:``},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(Qn,{prop:`email`,label:`邮箱`,"min-width":`200`}),(0,e.createVNode)(Qn,{label:`填写链接`,"min-width":`300`},{default:(0,e.withCtx)(({row:t})=>[(0,e.createVNode)(er,{type:`primary`,underline:!1,onClick:e=>Vn(t.url)},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(t.url),1)]),_:2},1032,[`onClick`])]),_:1}),(0,e.createVNode)(Qn,{label:`操作`,width:`70`,align:`center`},{default:(0,e.withCtx)(({row:t})=>[(0,e.createVNode)(a,{size:`small`,type:`primary`,link:``,onClick:e=>Vn(t.url)},{default:(0,e.withCtx)(()=>[...n[137]||=[(0,e.createTextVNode)(`复制`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])])):(0,e.createCommentVNode)(``,!0)])]),_:1},8,[`modelValue`]),(0,e.createVNode)(pe,{visible:oe.value,messages:(0,e.unref)(A).messages.value,loading:(0,e.unref)(A).loading.value,"is-collab":(0,e.unref)(A).isCollabMode.value,"collab-users":(0,e.unref)(A).collabUsers.value,"current-user":(0,e.unref)(A).currentUser.value,"is-owner":!I.value,onSend:ar,onClose:n[43]||=e=>oe.value=!1,"unread-mention":(0,e.unref)(A).unreadMention.value,onClearUnread:n[44]||=t=>(0,e.unref)(A).clearUnreadMention(),onClear:or},null,8,[`visible`,`messages`,`loading`,`is-collab`,`collab-users`,`current-user`,`is-owner`,`unread-mention`]),(0,e.createVNode)(ye,{modelValue:ce.value,"onUpdate:modelValue":n[45]||=e=>ce.value=e,"document-id":w.value,onApply:nr},null,8,[`modelValue`,`document-id`])],64)}}},[[`__scopeId`,`data-v-927591ce`]]);return(0,e.defineComponent)({name:`YourCompanyQuestionnaire`,props:{docId:{type:[Number,String],default:null},apiBase:{type:String,default:`/api`},saveApi:{type:[String,Function],default:null},loadApi:{type:[String,Function],default:null},wsUrl:{type:String,default:``},user:{type:Object,default:()=>({id:``,name:``,color:``})},uiConfig:{type:Object,default:()=>({})},aiApi:{type:[String,Object],default:null},roomId:{type:String,default:``}},setup(n,{slots:r}){return()=>(0,e.h)(`div`,{class:`yourcompany-questionnaire-wrapper`,style:`position:relative`},[(0,e.h)(U,{...n}),(0,e.h)(t.BrandWatermark)])}})});