| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row :gutter="20"> |
| | | <el-col :span="10"> |
| | | <el-form-item label="长期任务" prop="longTemp"> |
| | | <el-radio-group v-model="ruleForm.longTemp"> |
| | | <el-radio |
| | | v-for="(item, index) in longtype" |
| | | :label="item.value" |
| | | >{{ item.label }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8" v-if="ruleForm.longTemp"> |
| | | <el-form-item label="任务周期(几天后)" prop="name"> |
| | | <el-input |
| | | v-model="ruleForm.sendDay" |
| | | placeholder="默认5天后" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> --> |
| | | |
| | | <el-row> |
| | | <el-form-item prop="dynamicTags"> |
| | |
| | | <el-option |
| | | class="ruleFormaa" |
| | | v-for="item in flatArray" |
| | | :key="item.deptCode" |
| | | :key="item.id" |
| | | :label="item.label" |
| | | :value="item.deptCode" |
| | | > |
| | |
| | | <el-option |
| | | class="ruleFormaa" |
| | | v-for="item in flatArray" |
| | | :key="item.deptCode" |
| | | :key="item.id" |
| | | :label="item.label" |
| | | :value="item.deptCode" |
| | | > |
| | |
| | | >下一步</el-button |
| | | > |
| | | <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button> |
| | | <el-button @click="Departmenttreatment('ruleForm')" |
| | | <el-button @click="toExamine('ruleForm')" |
| | | >保存问卷基础信息</el-button |
| | | > |
| | | </el-form-item> |
| | |
| | | <dict-tag |
| | | :options="askvaluetype" |
| | | :value="scope.row.scriptType" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="维度" |
| | | align="center" |
| | | key="dimension" |
| | | prop="dimension" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.dimensionality_type" |
| | | :value="scope.row.dimension" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | placeholder="请输入题号" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item prop="valueType"> |
| | | <template #label> |
| | | 结果类型 |
| | | <el-tooltip |
| | | class="item" |
| | | effect="light" |
| | | content="本类型为结果收集类型;选项用于指向性题目如是否等;文本适用复杂情况;数值用于收集数值型数据" |
| | | placement="top-start" |
| | | > |
| | | <i class="el-icon-warning-outline"></i> |
| | | </el-tooltip> |
| | | <!-- 在标签后插入红色星号 --> |
| | | </template> |
| | | <el-radio-group v-model="topicobj.valueType"> |
| | | <el-radio :label="1">选项</el-radio> |
| | | <el-radio :label="2">文本</el-radio> |
| | | <el-radio :label="3">数值</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | |
| | | </el-form-item></el-col |
| | | > |
| | | <el-col :span="12" |
| | | ><el-form-item label="是否可用"> |
| | | <el-radio-group v-model="topicobj.isenable"> |
| | | ><el-form-item label="是否隐藏"> |
| | | <el-radio-group v-model="topicobj.ishide"> |
| | | <el-radio |
| | | v-for="(item, index) in usable" |
| | | v-for="(item, index) in hides" |
| | | :label="item.value" |
| | | >{{ item.label }}</el-radio |
| | | > |
| | |
| | | v-if="topicobj.scriptType == 1" |
| | | > |
| | | <el-radio-group v-model="topicobj.branchFlag"> |
| | | <el-radio :label="1">是</el-radio> |
| | | <el-radio :label="0">否</el-radio> |
| | | <el-radio label="1">是</el-radio> |
| | | <el-radio label="0">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="选中提示" v-if="topicobj.scriptType != 1"> |
| | |
| | | label="ABC等级" |
| | | > |
| | | <el-radio-group v-model="item.score"> |
| | | <el-radio label="A">A</el-radio> |
| | | <el-radio label="B">B</el-radio> |
| | | <el-radio label="C">C</el-radio> |
| | | <el-radio :label="1">A</el-radio> |
| | | <el-radio :label="2">B</el-radio> |
| | | <el-radio :label="3">C</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="关联服务"> |
| | | <div |
| | | v-if="item.sendTaskname" |
| | | class="service-tag-container" |
| | | > |
| | | <el-tag |
| | | type="success" |
| | | closable |
| | | @close="removeService(item)" |
| | | class="service-tag" |
| | | > |
| | | <i class="el-icon-connection service-icon"></i> |
| | | {{ item.sendTaskname }} |
| | | </el-tag> |
| | | </div> |
| | | <div v-else class="service-add-btn"> |
| | | <el-button |
| | | type="success" |
| | | size="small" |
| | | icon="el-icon-plus" |
| | | @click="openServiceDialog(item)" |
| | | class="add-service-btn" |
| | | > |
| | | 选择任务 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="默认选项"> |
| | | <el-radio-group v-model="item.defaultValue"> |
| | | <el-radio :label="2">是</el-radio> |
| | | <el-radio :label="1">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="10"> |
| | | <el-form-item label="异常提醒"> |
| | | <el-radio-group v-model="item.isabnormal"> |
| | | <el-radio :label="1">是</el-radio> |
| | | <el-radio :label="0">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-col :span="11"> |
| | | <!-- 修改:异常提醒部分 --> |
| | | <el-form-item label="异常提醒"> |
| | | <el-select |
| | | v-model="item.isabnormal" |
| | | placeholder="请选择状态" |
| | | > |
| | | <el-option |
| | | :value="0" |
| | | label="正常" |
| | | :style="{ color: '#67C23A' }" |
| | | > |
| | | <span style="color: #67c23a">● 正常</span> |
| | | </el-option> |
| | | |
| | | <el-option |
| | | :value="2" |
| | | label="警告" |
| | | :style="{ color: '#FFBA00' }" |
| | | > |
| | | <span style="color: #ffba00">● 警告</span> |
| | | </el-option> |
| | | <el-option |
| | | :value="1" |
| | | label="异常" |
| | | :style="{ color: '#f75c5c' }" |
| | | > |
| | | <span style="color: #f75c5c">● 异常</span> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item label="是否选中收集附加信息"> |
| | | <el-radio-group v-model="item.appendflag"> |
| | | <el-radio label="1">是</el-radio> |
| | | <el-radio label="0">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="10" v-if="topicobj.branchFlag == 1"> |
| | | <el-col :span="20" |
| | |
| | | <el-image |
| | | style="width: 100px; height: 100px" |
| | | :src="item.picturePath" |
| | | :preview-src-list="[...item.picturePath]" |
| | | :preview-src-list=" |
| | | item.picturePath ? [item.picturePath] : [] |
| | | " |
| | | > |
| | | </el-image> |
| | | </div> |
| | |
| | | </div> |
| | | <div v-else> |
| | | <div class="topicxq"> |
| | | <el-row> |
| | | <el-form-item label="是否作为意见收集题目"> |
| | | <el-radio-group v-model="topicobj.isMydException"> |
| | | <el-radio label="1">是</el-radio> |
| | | <el-radio label="0">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-row> |
| | | <el-row :gutter="10"> |
| | | <el-form-item label="答案"> |
| | | <el-input |
| | |
| | | > |
| | | <el-button type="primary" @click="laststep()">上一步</el-button> |
| | | <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button> |
| | | <el-button @click="Departmenttreatment('ruleForm')" |
| | | >保存问题数据</el-button |
| | | > |
| | | <el-button @click="toExamine('ruleForm')">保存问题数据</el-button> |
| | | </div> |
| | | <!-- 问卷预览 --> |
| | | <div v-if="Editprogress == 3"> |
| | |
| | | v-if="item.scriptType == 1" |
| | | > |
| | | <div class="dev-text"> |
| | | {{ item.sort }}、[单选]<span>{{ item.scriptContent }}</span> |
| | | {{ item.sort }}. [单选]<span>{{ item.scriptContent }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-radio-group v-model="item.remark"> |
| | |
| | | v-if="item.scriptType == 2" |
| | | > |
| | | <div class="dev-text"> |
| | | {{ item.sort }}、[多选]<span>{{ item.scriptContent }}</span> |
| | | {{ item.sort }}. [多选]<span>{{ item.scriptContent }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-checkbox-group v-model="qremark"> |
| | |
| | | <div class="basics"> |
| | | 选项设置 |
| | | <span style="margin-left: 30px" |
| | | ><el-button type="primary" round @click="addoption" |
| | | >+新增</el-button |
| | | ><el-button class="addoption-btn" @click="addoption" |
| | | >+新增选项</el-button |
| | | ></span |
| | | > |
| | | </div> |
| | | </div> |
| | | <el-divider></el-divider> |
| | | <div |
| | | class="topicxq" |
| | | class="topic-card" |
| | | v-for="item in indexform.svyLibTemplateTargetoptions" |
| | | v-if="item.isoperation != 3" |
| | | > |
| | |
| | | <el-input |
| | | style="width: 400px" |
| | | type="text" |
| | | placeholder="请输入选项分值" |
| | | placeholder="请输入选项名称" |
| | | v-model="item.optioncontent" |
| | | show-word-limit |
| | | > |
| | |
| | | label="ABC等级" |
| | | > |
| | | <el-radio-group v-model="item.score"> |
| | | <el-radio label="A">A</el-radio> |
| | | <el-radio label="B">B</el-radio> |
| | | <el-radio label="C">C</el-radio> |
| | | <el-radio :label="1">A</el-radio> |
| | | <el-radio :label="2">B</el-radio> |
| | | <el-radio :label="3">C</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item |
| | |
| | | <el-image |
| | | style="width: 100px; height: 100px" |
| | | :src="item.picturePath" |
| | | :preview-src-list="[...item.picturePath]" |
| | | :preview-src-list=" |
| | | item.picturePath ? [item.picturePath] : [] |
| | | " |
| | | > |
| | | </el-image> |
| | | </div> |
| | |
| | | </el-tabs> |
| | | </div> |
| | | </el-drawer> |
| | | <!-- 选择任务弹窗 --> |
| | | <el-dialog |
| | | title="选择任务" |
| | | :visible.sync="serviceDialogVisible" |
| | | width="50%" |
| | | > |
| | | <div> |
| | | <el-form |
| | | :model="topqueryParams" |
| | | ref="queryForm" |
| | | size="small" |
| | | :inline="true" |
| | | label-width="98px" |
| | | > |
| | | <el-form-item label="任务名称"> |
| | | <el-input |
| | | v-model="topqueryParams.taskName" |
| | | @keyup.enter.native="handleQuery" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="任务类型" prop="status"> |
| | | <el-select |
| | | v-model="topqueryParams.serviceType" |
| | | placeholder="请选择服务类型" |
| | | > |
| | | <el-option |
| | | v-for="item in taskoptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-table |
| | | :data="filteredServiceList" |
| | | v-loading="taskloading" |
| | | @selection-change="handleServiceSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column |
| | | label="任务名称" |
| | | fixed |
| | | align="center" |
| | | key="taskName" |
| | | prop="taskName" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | <el-table-column |
| | | label="任务描述" |
| | | align="center" |
| | | key="taskDesc" |
| | | prop="taskDesc" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | <el-table-column |
| | | label="服务项目" |
| | | align="center" |
| | | key="templatename" |
| | | prop="templatename" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | <el-table-column |
| | | label="总任务/已随访" |
| | | align="center" |
| | | key="nickName" |
| | | width="120" |
| | | prop="nickName" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span |
| | | >{{ |
| | | scope.row.wfs || scope.row.wfs == 0 |
| | | ? scope.row.wfs + scope.row.yfs |
| | | : "" |
| | | }}/{{ scope.row.yfs }}</span |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="是否长期任务" |
| | | align="center" |
| | | key="longTask" |
| | | prop="longTask" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.longTask ? "长期任务" : "非长期" }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="状态" |
| | | align="center" |
| | | key="sendState" |
| | | prop="sendState" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.task_status" |
| | | :value="scope.row.sendState" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="创建人" |
| | | align="center" |
| | | key="createBy" |
| | | prop="createBy" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | <el-table-column |
| | | label="创建时间" |
| | | sortable |
| | | align="center" |
| | | prop="createTime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.createTime) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | v-show="tasktotal > 0" |
| | | :total="tasktotal" |
| | | :page.sync="topqueryParams.pageNum" |
| | | :limit.sync="topqueryParams.pageSize" |
| | | @pagination="gettaskList" |
| | | /> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="serviceDialogVisible = false">取消</el-button> |
| | | <el-button type="primary" @click="confirmServiceSelection" |
| | | >确定</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 添加适用疾病窗口 --> |
| | | <Optional-Form |
| | | ref="child" |
| | |
| | | depthospgetsonlist, |
| | | getQtemplateobj, |
| | | compileQtemplate, |
| | | Qtemplateinfo, |
| | | compileissue, |
| | | delQtemplateinfo, |
| | | Followupinfo, |
| | | issueinfo, |
| | | getissuelist, |
| | | depthospgetsondel, |
| | | deltargetillness, |
| | | addtargetillness, |
| | | getillnesslist, |
| | | illnesslistget, |
| | | getTasklist, |
| | | getillness, |
| | | } from "@/api/AiCentre/index"; |
| | | import OptionalForm from "@/components/OptionalForm"; //正则组件 |
| | |
| | | import { deptTreeSelect } from "@/api/system/user"; |
| | | |
| | | export default { |
| | | name: "Questionnaireinfo", |
| | | |
| | | dicts: [ |
| | | "sys_normal_disable", |
| | | "dimensionality_type", |
| | | "sys_user_sex", |
| | | "task_status", |
| | | ], |
| | | components: { OptionalForm }, |
| | | |
| | | data() { |
| | |
| | | dialogVisiblepatient: false, //适用疾病窗口 |
| | | inputValue: "", |
| | | topicobj: {}, |
| | | topqueryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | type: 3, |
| | | }, |
| | | tasktotal: 0, |
| | | taskloading: false, |
| | | taskoptions: [ |
| | | { |
| | | value: 4, |
| | | label: "宣教关怀", |
| | | raw: { |
| | | cssClass: "", |
| | | listClass: "", |
| | | }, |
| | | }, |
| | | { |
| | | value: 5, |
| | | label: "复诊通知", |
| | | raw: { |
| | | cssClass: "", |
| | | listClass: "", |
| | | }, |
| | | }, |
| | | ], |
| | | // 总条数 |
| | | total: 1, |
| | | serviceDialogVisible: false, // 选择任务弹窗显示控制 |
| | | serviceSearch: "", // 任务搜索关键词 |
| | | serviceList: [], // 任务列表 |
| | | filteredServiceList: [], |
| | | selectedService: null, // 选中的任务 |
| | | currentOptionItem: null, // 当前正在设置的任务选项项 |
| | | ruleForm: { |
| | | svyTemplateLibScripts: [], |
| | | tempDetpRelevances: [], |
| | | svyLibTemplateTagList: [], |
| | | suitway: [], |
| | | scoreType: "4", |
| | | isenable: "0", |
| | | longTemp: "0", |
| | |
| | | usable: [ |
| | | { value: "0", label: "可用" }, |
| | | { value: "1", label: "停用" }, |
| | | ], |
| | | hides: [ |
| | | { value: 0, label: "正常" }, |
| | | { value: 1, label: "隐藏" }, |
| | | ], |
| | | longtype: [ |
| | | { value: "0", label: "普通任务" }, |
| | |
| | | this.confirmillness(); |
| | | this.putbelongDepts(); |
| | | this.$modal.closeLoading(); |
| | | // this.$router.go(-1); |
| | | window.location.reload(); |
| | | this.$router.go(-1); |
| | | // window.location.reload(); |
| | | }); |
| | | } else { |
| | | this.ruleForm.isoperation = 1; |
| | |
| | | }); |
| | | } |
| | | }, |
| | | // 题目校验 |
| | | toExamine() { |
| | | // 遍历题目集合 |
| | | for (let i = 0; i < this.ruleForm.svyTemplateLibScripts.length; i++) { |
| | | const question = this.ruleForm.svyTemplateLibScripts[i]; |
| | | |
| | | // 如果 scriptType 为 4,则跳过当前题目 |
| | | if (question.scriptType === 4) { |
| | | continue; |
| | | } |
| | | // 获取当前题目的选项集合 |
| | | const options = question.svyLibTemplateTargetoptions; |
| | | |
| | | // 创建一个 Set 来存储选项名称,用于检测重复 |
| | | const optionNames = new Set(); |
| | | |
| | | // 遍历选项集合 |
| | | for (let j = 0; j < options.length; j++) { |
| | | const option = options[j]; |
| | | const optionContent = option.optioncontent; |
| | | |
| | | // 如果选项名称已经存在于 Set 中,说明重复 |
| | | if (optionNames.has(optionContent)) { |
| | | this.$message.error( |
| | | `题目 ${question.id} 的选项名称 "${optionContent}" 重复` |
| | | ); |
| | | return false; // 返回 false 表示校验失败 |
| | | } |
| | | // 将选项名称添加到 Set 中 |
| | | optionNames.add(optionContent); |
| | | } |
| | | } |
| | | |
| | | // 如果所有题目都校验通过,返回 true |
| | | console.log("所有题目校验通过,选项名称无重复"); |
| | | this.Departmenttreatment(); |
| | | }, |
| | | |
| | | // 科室/院区处理 |
| | | Departmenttreatment() { |
| | | this.tempDetpRelevanceslist.forEach((item) => { |
| | |
| | | }); |
| | | } |
| | | }, |
| | | // ---------------选项任务绑定 |
| | | openServiceDialog(item) { |
| | | this.gettaskList(); |
| | | this.currentOptionItem = item; |
| | | }, |
| | | gettaskList() { |
| | | getTasklist(this.topqueryParams).then((response) => { |
| | | this.filteredServiceList = response.rows; |
| | | this.tasktotal = response.total; |
| | | this.serviceDialogVisible = true; |
| | | this.$forceUpdate(); |
| | | this.taskloading = false; |
| | | }); |
| | | }, |
| | | handleQuery() { |
| | | this.topqueryParams.pageNum = 1; |
| | | this.gettaskList(); |
| | | }, |
| | | // 新增方法:加载任务列表 |
| | | loadServiceList() { |
| | | // 这里调用API获取任务列表 |
| | | // 示例数据,实际使用时需要调用相应的API |
| | | this.serviceList = [ |
| | | { id: 1, taskName: "随访任务1", taskType: "常规随访" }, |
| | | { id: 2, taskName: "健康评估任务", taskType: "健康评估" }, |
| | | { id: 3, taskName: "用药提醒任务", taskType: "用药管理" }, |
| | | ]; |
| | | }, |
| | | |
| | | // 新增方法:处理任务选择变化 |
| | | handleServiceSelectionChange(selection) { |
| | | this.selectedService = selection.length > 0 ? selection[0] : null; |
| | | }, |
| | | |
| | | // 新增方法:确认选择任务 |
| | | confirmServiceSelection() { |
| | | console.log(this.selectedService); |
| | | console.log(this.currentOptionItem); |
| | | |
| | | if (this.selectedService && this.currentOptionItem) { |
| | | this.currentOptionItem.sendTaskname = this.selectedService.taskName; |
| | | this.currentOptionItem.sendTaskid = this.selectedService.taskid; |
| | | this.serviceDialogVisible = false; |
| | | this.serviceSearch = ""; |
| | | this.selectedService = null; |
| | | } else { |
| | | this.$message.warning("请选择一个任务"); |
| | | } |
| | | }, |
| | | |
| | | // 新增方法:移除关联服务 |
| | | removeService(item) { |
| | | item.sendTaskname = ""; |
| | | item.sendTaskid = ""; |
| | | }, |
| | | // ------------------------ |
| | | // 下一步 |
| | | nextstep() { |
| | | if (this.Editprogress <= 2) { |
| | |
| | | }, |
| | | // 新增问题 |
| | | addtopic(row) { |
| | | console.log(row); |
| | | row.isoperation = 1; |
| | | row.scriptid = row.id; |
| | | row.svyLibScriptOptions.forEach((item) => { |
| | | item.isoperation = 1; |
| | | }); |
| | |
| | | '是否确认新增名称为"' + this.indexform.scriptTopic + '"的问题数据?' |
| | | ) |
| | | .then(() => { |
| | | // ✅ 强制初始化 |
| | | if (!Array.isArray(this.indexform.svyLibTemplateTargetoptions)) { |
| | | this.$set(this.indexform, "svyLibTemplateTargetoptions", []); |
| | | } |
| | | |
| | | this.indexform.isoperation = 1; |
| | | this.indexform.svyLibTemplateTargetoptions.forEach((item) => { |
| | | item.isoperation = 1; |
| | | }); |
| | | |
| | | this.ruleForm.svyTemplateLibScripts.push(this.indexform); |
| | | this.indexform = { svyTemplateLibScripts: [] }; |
| | | this.drawer = false; |
| | | |
| | | this.sortFn(); |
| | | this.$modal.msgSuccess("问题新增成功,保存模板失效"); |
| | | }); |
| | |
| | | // --------------------------------------------------------- |
| | | // 新问题新增 |
| | | addoption() { |
| | | if (!this.indexform.svyLibTemplateTargetoptions) { |
| | | this.indexform.svyLibTemplateTargetoptions = []; |
| | | if (!Array.isArray(this.indexform.svyLibTemplateTargetoptions)) { |
| | | this.$set(this.indexform, "svyLibTemplateTargetoptions", []); |
| | | } |
| | | |
| | | this.indexform.svyLibTemplateTargetoptions.push({ |
| | | tempId: Date.now() + Math.random(), |
| | | optioncontent: "", |
| | | score: "", |
| | | isoperation: 1, |
| | | }); |
| | | console.log(this.indexform.svyLibTemplateTargetoptions); |
| | | }, |
| | | deletexuanx(item) { |
| | | this.indexform.svyLibTemplateTargetoptions = |
| | | this.indexform.svyLibTemplateTargetoptions.filter( |
| | | (opt) => opt.tempId !== item.tempId |
| | | ); |
| | | }, |
| | | // 选项文件上传 |
| | | handleChange(item, response, file, fileList) { |
| | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | $radius: 8px; |
| | | $border: #e4e7ed; |
| | | $bg-light: #f7f9fb; |
| | | $primary: #409eff; |
| | | $text-main: #303133; |
| | | $text-sub: #606266; |
| | | .Questionnairemanagement { |
| | | // display: flex; |
| | | } |
| | | |
| | | .sidecolumn { |
| | | margin: 10px 20px 0 20px; |
| | | padding: 20px; |
| | |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | } |
| | | |
| | | .leftvlue { |
| | | // // display: flex; |
| | | // // flex: 1; |
| | |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | |
| | | .mulsz { |
| | | font-size: 20px; |
| | | } |
| | | |
| | | .leftvlue-jbxx { |
| | | display: flex; /* 使用 Flexbox 布局 */ |
| | | display: flex; |
| | | /* 使用 Flexbox 布局 */ |
| | | justify-content: space-between; |
| | | font-size: 24px; |
| | | border-left: 5px solid #41a1be; |
| | | padding-left: 5px; |
| | | margin: 15px 0; |
| | | } |
| | | |
| | | .demo-cascader { |
| | | margin-right: 20px; |
| | | } |
| | | |
| | | .PreviewTemplate { |
| | | color: #02a7f0; |
| | | cursor: pointer; |
| | |
| | | margin: 0 20px; |
| | | } |
| | | } |
| | | |
| | | .preview-left { |
| | | margin: 20px; |
| | | // margin: 20px; |
| | |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | |
| | | .scriptTopic-dev { |
| | | margin-bottom: 25px; |
| | | font-size: 20px !important; |
| | | |
| | | .dev-text { |
| | | margin-bottom: 10px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .headline { |
| | | display: flex; |
| | | justify-content: space-between; |
| | |
| | | padding-left: 5px; |
| | | margin: 15px 0; |
| | | } |
| | | |
| | | .xinz-inf { |
| | | font-size: 18px; |
| | | white-space: nowrap; |
| | |
| | | .el-tag + .el-tag { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .button-new-tag { |
| | | margin-left: 10px; |
| | | height: 32px; |
| | |
| | | padding-top: 0; |
| | | padding-bottom: 0; |
| | | } |
| | | |
| | | .input-new-tag { |
| | | width: 90px; |
| | | margin-left: 10px; |
| | | vertical-align: bottom; |
| | | } |
| | | } |
| | | |
| | | .xinz-infs { |
| | | font-size: 18px; |
| | | line-height: 48px; |
| | |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | |
| | | .addtopic { |
| | | margin-top: 30px; |
| | | } |
| | | |
| | | .presentation { |
| | | margin: 20px 0; |
| | | display: flex; |
| | | |
| | | .presentation-left { |
| | | width: 45%; |
| | | // height: 500px; |
| | | .button-textxg { |
| | | color: #024df0; |
| | | } |
| | | .button-textsc { |
| | | color: #f52727; |
| | | } |
| | | } |
| | | .spresentation-left { |
| | | width: 100%; |
| | | // height: 500px; |
| | | .button-textxg { |
| | | color: #024df0; |
| | | } |
| | | .button-textsc { |
| | | color: #f52727; |
| | | } |
| | | } |
| | | .presentation-right { |
| | | width: 55%; |
| | | max-height: 688px; |
| | | max-height: 80vh; |
| | | padding: 0 20px; |
| | | font-size: 18px; |
| | | overflow: auto; |
| | | |
| | | .button-textxg { |
| | | color: #024df0; |
| | | } |
| | | |
| | | .button-textsc { |
| | | color: #f52727; |
| | | } |
| | | } |
| | | |
| | | .spresentation-left { |
| | | width: 100%; |
| | | |
| | | // height: 500px; |
| | | .button-textxg { |
| | | color: #024df0; |
| | | } |
| | | |
| | | .button-textsc { |
| | | color: #f52727; |
| | | } |
| | | } |
| | | |
| | | .presentation-right { |
| | | flex: 6; |
| | | min-width: 360px; |
| | | max-height: 80vh; |
| | | overflow: auto; |
| | | padding: 20px; |
| | | |
| | | .headline { |
| | | font-size: 20px; |
| | | border-left: 3px solid #41a1be; |
| | | padding-left: 5px; |
| | | margin: 15px 0; |
| | | } |
| | | .topicxq { |
| | | background-color: #e2f5fc; |
| | | border-radius: 4px; |
| | | margin-top: 10px; |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | color: $text-main; |
| | | padding-left: 10px; |
| | | padding-top: 15px; |
| | | border-left: 4px solid $primary; |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | | .topic-card { |
| | | background: #fff; |
| | | border: 1px solid $border; |
| | | border-radius: $radius; |
| | | padding: 20px; |
| | | margin-bottom: 16px; |
| | | transition: box-shadow 0.2s; |
| | | |
| | | &:hover { |
| | | box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); |
| | | } |
| | | |
| | | .el-form-item { |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | | .el-form-item__label { |
| | | font-size: 14px; |
| | | color: $text-sub; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .demo-drawer { |
| | | .preview-left { |
| | | padding: 20px; |
| | | |
| | | .headline { |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | margin-bottom: 12px; |
| | | } |
| | | |
| | | .topic-card { |
| | | background: #fff; |
| | | border: 1px solid $border; |
| | | border-radius: $radius; |
| | | padding: 16px; |
| | | margin-bottom: 12px; |
| | | |
| | | .el-form-item { |
| | | margin-bottom: 14px; |
| | | } |
| | | |
| | | .el-button--primary { |
| | | background: $primary; |
| | | border-radius: 20px; |
| | | padding: 8px 16px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .addoption-btn { |
| | | width: 100%; |
| | | border: 1px dashed $border; |
| | | color: $text-sub; |
| | | background: $bg-light; |
| | | border-radius: $radius; |
| | | height: 40px; |
| | | |
| | | &:hover { |
| | | border-color: $primary; |
| | | color: $primary; |
| | | } |
| | | } |
| | | .topicxq { |
| | |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | } |
| | | .custom-width { |
| | | width: 100px; /* 设置宽度样式 */ |
| | | |
| | | .service-tag-container { |
| | | display: inline-block; |
| | | |
| | | .service-tag { |
| | | margin-right: 10px; |
| | | max-width: 220px; |
| | | height: 32px; |
| | | line-height: 30px; |
| | | padding: 0 12px; |
| | | border-radius: 16px; |
| | | font-size: 14px; |
| | | font-weight: 500; |
| | | border: 1px solid #e1f3d8; |
| | | background: linear-gradient(135deg, #f0f9eb, #e1f3d8); |
| | | box-shadow: 0 2px 4px rgba(103, 194, 58, 0.1); |
| | | transition: all 0.3s ease; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | white-space: nowrap; |
| | | position: relative; |
| | | |
| | | &:hover { |
| | | transform: translateY(-1px); |
| | | box-shadow: 0 4px 8px rgba(103, 194, 58, 0.15); |
| | | border-color: #b3e19d; |
| | | } |
| | | |
| | | .service-icon { |
| | | margin-right: 4px; |
| | | font-size: 12px; |
| | | } |
| | | |
| | | ::v-deep .el-icon-close { |
| | | margin-left: 6px; |
| | | font-size: 12px; |
| | | color: #67c23a; |
| | | background-color: #f0f9eb; |
| | | border-radius: 50%; |
| | | width: 16px; |
| | | height: 16px; |
| | | line-height: 16px; |
| | | |
| | | &:hover { |
| | | background-color: #67c23a; |
| | | color: white; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .service-add-btn { |
| | | display: inline-block; |
| | | |
| | | .add-service-btn { |
| | | height: 32px; |
| | | padding: 0 16px; |
| | | border-radius: 16px; |
| | | font-size: 14px; |
| | | font-weight: 500; |
| | | background: linear-gradient(135deg, #67c23a, #85ce61); |
| | | border: none; |
| | | box-shadow: 0 2px 4px rgba(103, 194, 58, 0.2); |
| | | transition: all 0.3s ease; |
| | | |
| | | &:hover { |
| | | transform: translateY(-1px); |
| | | box-shadow: 0 4px 8px rgba(103, 194, 58, 0.3); |
| | | background: linear-gradient(135deg, #5daf34, #7ac252); |
| | | } |
| | | |
| | | &:active { |
| | | transform: translateY(0); |
| | | box-shadow: 0 2px 4px rgba(103, 194, 58, 0.2); |
| | | } |
| | | |
| | | i { |
| | | margin-right: 4px; |
| | | font-size: 12px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 响应式设计 |
| | | @media (max-width: 768px) { |
| | | .service-tag-container .service-tag { |
| | | max-width: 180px; |
| | | font-size: 13px; |
| | | padding: 0 10px; |
| | | } |
| | | |
| | | .service-add-btn .add-service-btn { |
| | | padding: 0 12px; |
| | | font-size: 13px; |
| | | } |
| | | } |
| | | |
| | | // 添加动画效果 |
| | | @keyframes tagFadeIn { |
| | | from { |
| | | opacity: 0; |
| | | transform: scale(0.8) translateY(-5px); |
| | | } |
| | | |
| | | to { |
| | | opacity: 1; |
| | | transform: scale(1) translateY(0); |
| | | } |
| | | } |
| | | |
| | | .service-tag { |
| | | animation: tagFadeIn 0.3s ease-out; |
| | | } |
| | | |
| | | // 为整个选项区域添加统一样式 |
| | | .topicxq { |
| | | .service-tag-container, |
| | | .service-add-btn { |
| | | margin: 8px 0; |
| | | } |
| | | } |
| | | |
| | | // 确保在表单中的正确布局 |
| | | .el-form-item { |
| | | .el-form-item__content { |
| | | .service-tag-container, |
| | | .service-add-btn { |
| | | vertical-align: middle; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .custom-width { |
| | | width: 100px; |
| | | /* 设置宽度样式 */ |
| | | } |
| | | |
| | | .el-select { |
| | | width: 280px; |
| | | } |
| | |
| | | .el-cascader { |
| | | width: 40%; |
| | | } |
| | | |
| | | ::v-deep .addtopic-input { |
| | | input { |
| | | background: #02a7f0; |
| | |
| | | width: 150px; |
| | | } |
| | | } |
| | | |
| | | ::v-deep.el-step.is-vertical .el-step__title { |
| | | font-size: 25px; |
| | | } |
| | | |
| | | ::v-deep.el-input--medium { |
| | | font-size: 18px !important; |
| | | } |
| | | |
| | | ::v-deep.ruleFormaa.el-select { |
| | | display: inline-block; |
| | | position: relative; |
| | | width: 700px; |
| | | } |
| | | |
| | | .el-select__tags { |
| | | font-size: 20px; |
| | | max-width: 888px !important; |
| | | } |
| | | |
| | | ::v-deep.el-radio__inner { |
| | | width: 22px; |
| | | height: 22px; |
| | | } |
| | | |
| | | // ::v-deep.scriptTopic-dev.el-radio__label { |
| | | // font-size: 24px; |
| | | // } |
| | |
| | | font-size: 24px; |
| | | } |
| | | } |
| | | |
| | | ::v-deep.el-checkbox-group { |
| | | span { |
| | | font-size: 24px; |
| | | } |
| | | } |
| | | |
| | | // ::v-deep.el-form-item--medium .el-form-item__content { |
| | | // line-height: 36px; |
| | | // display: flex; |