|  | @@ -0,0 +1,610 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <div class="app-container">
 | 
	
		
			
				|  |  | +    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
 | 
	
		
			
				|  |  | +      <el-form-item label="名称" prop="name">
 | 
	
		
			
				|  |  | +        <el-input
 | 
	
		
			
				|  |  | +          v-model="queryParams.name"
 | 
	
		
			
				|  |  | +          placeholder="请输入名称"
 | 
	
		
			
				|  |  | +          clearable
 | 
	
		
			
				|  |  | +          size="small"
 | 
	
		
			
				|  |  | +          @keyup.enter.native="handleQuery"
 | 
	
		
			
				|  |  | +        />
 | 
	
		
			
				|  |  | +      </el-form-item>
 | 
	
		
			
				|  |  | +      <el-form-item label="状态" prop="status">
 | 
	
		
			
				|  |  | +        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
 | 
	
		
			
				|  |  | +          <el-option
 | 
	
		
			
				|  |  | +            v-for="dict in statusOptions"
 | 
	
		
			
				|  |  | +            :key="dict.dictValue"
 | 
	
		
			
				|  |  | +            :label="dict.dictLabel"
 | 
	
		
			
				|  |  | +            :value="dict.dictValue"
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </el-select>
 | 
	
		
			
				|  |  | +      </el-form-item>
 | 
	
		
			
				|  |  | +      <el-form-item>
 | 
	
		
			
				|  |  | +        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
 | 
	
		
			
				|  |  | +        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
 | 
	
		
			
				|  |  | +      </el-form-item>
 | 
	
		
			
				|  |  | +    </el-form>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <el-row :gutter="10" class="mb8">
 | 
	
		
			
				|  |  | +      <el-col :span="1.5">
 | 
	
		
			
				|  |  | +        <el-button
 | 
	
		
			
				|  |  | +          type="primary"
 | 
	
		
			
				|  |  | +          plain
 | 
	
		
			
				|  |  | +          icon="el-icon-plus"
 | 
	
		
			
				|  |  | +          size="mini"
 | 
	
		
			
				|  |  | +          @click="handleAdd"
 | 
	
		
			
				|  |  | +          v-hasPermi="['his:testTemp:add']"
 | 
	
		
			
				|  |  | +        >新增</el-button>
 | 
	
		
			
				|  |  | +      </el-col>
 | 
	
		
			
				|  |  | +      <el-col :span="1.5">
 | 
	
		
			
				|  |  | +        <el-button
 | 
	
		
			
				|  |  | +          type="success"
 | 
	
		
			
				|  |  | +          plain
 | 
	
		
			
				|  |  | +          icon="el-icon-edit"
 | 
	
		
			
				|  |  | +          size="mini"
 | 
	
		
			
				|  |  | +          :disabled="single"
 | 
	
		
			
				|  |  | +          @click="handleUpdate"
 | 
	
		
			
				|  |  | +          v-hasPermi="['his:testTemp:edit']"
 | 
	
		
			
				|  |  | +        >修改</el-button>
 | 
	
		
			
				|  |  | +      </el-col>
 | 
	
		
			
				|  |  | +      <el-col :span="1.5">
 | 
	
		
			
				|  |  | +        <el-button
 | 
	
		
			
				|  |  | +          type="danger"
 | 
	
		
			
				|  |  | +          plain
 | 
	
		
			
				|  |  | +          icon="el-icon-delete"
 | 
	
		
			
				|  |  | +          size="mini"
 | 
	
		
			
				|  |  | +          :disabled="multiple"
 | 
	
		
			
				|  |  | +          @click="handleDelete"
 | 
	
		
			
				|  |  | +          v-hasPermi="['his:testTemp:remove']"
 | 
	
		
			
				|  |  | +        >删除</el-button>
 | 
	
		
			
				|  |  | +      </el-col>
 | 
	
		
			
				|  |  | +        <el-col :span="1.5">
 | 
	
		
			
				|  |  | +          <el-button
 | 
	
		
			
				|  |  | +            type="warning"
 | 
	
		
			
				|  |  | +            plain
 | 
	
		
			
				|  |  | +            icon="el-icon-download"
 | 
	
		
			
				|  |  | +            size="mini"
 | 
	
		
			
				|  |  | +            :loading="exportLoading"
 | 
	
		
			
				|  |  | +            @click="handleExport"
 | 
	
		
			
				|  |  | +            v-hasPermi="['his:testTemp:export']"
 | 
	
		
			
				|  |  | +          >导出</el-button>
 | 
	
		
			
				|  |  | +        </el-col>
 | 
	
		
			
				|  |  | +      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
 | 
	
		
			
				|  |  | +    </el-row>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <el-table v-loading="loading" border :data="testTempList" @selection-change="handleSelectionChange" >
 | 
	
		
			
				|  |  | +      <el-table-column type="selection" width="55" align="center" />
 | 
	
		
			
				|  |  | +      <el-table-column label="名称" align="center" prop="name" />
 | 
	
		
			
				|  |  | +      <el-table-column label="模板编号" align="center" prop="tempCode" />
 | 
	
		
			
				|  |  | +      <el-table-column label="状态" align="center" prop="status">
 | 
	
		
			
				|  |  | +        <template slot-scope="scope">
 | 
	
		
			
				|  |  | +          <dict-tag :options="statusOptions" :value="scope.row.status"/>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </el-table-column>
 | 
	
		
			
				|  |  | +      <el-table-column label="副标题" align="center" prop="title" />
 | 
	
		
			
				|  |  | +      <el-table-column label="图片" align="center" prop="img" width="100px">
 | 
	
		
			
				|  |  | +           <template slot-scope="scope">
 | 
	
		
			
				|  |  | +                  <el-popover
 | 
	
		
			
				|  |  | +                    placement="right"
 | 
	
		
			
				|  |  | +                    title=""
 | 
	
		
			
				|  |  | +                    trigger="hover">
 | 
	
		
			
				|  |  | +                    <img slot="reference" :src="scope.row.img" width="70px">
 | 
	
		
			
				|  |  | +                    <img :src="scope.row.img" style="max-width: 150px;">
 | 
	
		
			
				|  |  | +                  </el-popover>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </el-table-column>
 | 
	
		
			
				|  |  | +      <el-table-column label="预计分钟" align="center" prop="time" />
 | 
	
		
			
				|  |  | +      <el-table-column label="题目数量" align="center" prop="num" />
 | 
	
		
			
				|  |  | +      <el-table-column label="测试人数" align="center" prop="peopleNum" />
 | 
	
		
			
				|  |  | +   <!--   <el-table-column label="备注" align="center" prop="remark" /> -->
 | 
	
		
			
				|  |  | +       <el-table-column label="创建时间" align="center" prop="createTime" width="160"/>
 | 
	
		
			
				|  |  | +        <el-table-column label="更新时间" align="center" prop="updateTime" width="160"/>
 | 
	
		
			
				|  |  | +      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120px" fixed="right">
 | 
	
		
			
				|  |  | +        <template slot-scope="scope">
 | 
	
		
			
				|  |  | +          <el-button
 | 
	
		
			
				|  |  | +            size="mini"
 | 
	
		
			
				|  |  | +            type="text"
 | 
	
		
			
				|  |  | +            icon="el-icon-edit"
 | 
	
		
			
				|  |  | +            @click="handleUpdate(scope.row)"
 | 
	
		
			
				|  |  | +            v-hasPermi="['his:testTemp:edit']"
 | 
	
		
			
				|  |  | +          >修改</el-button>
 | 
	
		
			
				|  |  | +          <el-button
 | 
	
		
			
				|  |  | +               size="mini"
 | 
	
		
			
				|  |  | +               type="text"
 | 
	
		
			
				|  |  | +              @click="updateItem(scope.row)"
 | 
	
		
			
				|  |  | +          >选项管理
 | 
	
		
			
				|  |  | +          </el-button>
 | 
	
		
			
				|  |  | +           <el-button
 | 
	
		
			
				|  |  | +                size="mini"
 | 
	
		
			
				|  |  | +                type="text"
 | 
	
		
			
				|  |  | +                @click="handledetails(scope.row)"
 | 
	
		
			
				|  |  | +                v-hasPermi="['his:testTemp:edit']"
 | 
	
		
			
				|  |  | +          >详情
 | 
	
		
			
				|  |  | +          </el-button>
 | 
	
		
			
				|  |  | +          <el-button
 | 
	
		
			
				|  |  | +            size="mini"
 | 
	
		
			
				|  |  | +            type="text"
 | 
	
		
			
				|  |  | +            icon="el-icon-delete"
 | 
	
		
			
				|  |  | +            @click="handleDelete(scope.row)"
 | 
	
		
			
				|  |  | +            v-hasPermi="['his:testTemp:remove']"
 | 
	
		
			
				|  |  | +          >删除</el-button>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </el-table-column>
 | 
	
		
			
				|  |  | +    </el-table>
 | 
	
		
			
				|  |  | +    <pagination
 | 
	
		
			
				|  |  | +      v-show="total>0"
 | 
	
		
			
				|  |  | +      :total="total"
 | 
	
		
			
				|  |  | +      :page.sync="queryParams.pageNum"
 | 
	
		
			
				|  |  | +      :limit.sync="queryParams.pageSize"
 | 
	
		
			
				|  |  | +      @pagination="getList"
 | 
	
		
			
				|  |  | +    />
 | 
	
		
			
				|  |  | +    <!-- 添加或修改测一测模板对话框 -->
 | 
	
		
			
				|  |  | +    <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
 | 
	
		
			
				|  |  | +      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
 | 
	
		
			
				|  |  | +        <el-form-item label="名称" prop="name">
 | 
	
		
			
				|  |  | +          <el-input v-model="form.name" placeholder="请输入名称" />
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +        <el-form-item label="状态" prop="status">
 | 
	
		
			
				|  |  | +          <el-radio-group v-model="form.status"  >
 | 
	
		
			
				|  |  | +            <el-radio
 | 
	
		
			
				|  |  | +              v-for="dict in statusOptions"
 | 
	
		
			
				|  |  | +              :key="dict.dictValue"
 | 
	
		
			
				|  |  | +              :label="parseInt(dict.dictValue)"
 | 
	
		
			
				|  |  | +            >{{dict.dictLabel}}</el-radio>
 | 
	
		
			
				|  |  | +          </el-radio-group>
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="副标题" prop="title">
 | 
	
		
			
				|  |  | +                  <el-input v-model="form.title" placeholder="请输入标题" />
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                <el-form-item label="图片" prop="img">
 | 
	
		
			
				|  |  | +                  <el-upload
 | 
	
		
			
				|  |  | +                              v-model="form.img"
 | 
	
		
			
				|  |  | +                              class="avatar-uploader"
 | 
	
		
			
				|  |  | +                              :action="uploadUrl"
 | 
	
		
			
				|  |  | +                              :show-file-list="false"
 | 
	
		
			
				|  |  | +                              :on-success="handleAvatarSuccess"
 | 
	
		
			
				|  |  | +                              :before-upload="beforeAvatarUpload">
 | 
	
		
			
				|  |  | +                              <img v-if="form.img" :src="form.img" class="avatar" width="300px">
 | 
	
		
			
				|  |  | +                              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
 | 
	
		
			
				|  |  | +                  </el-upload>
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="预计分钟" prop="time">
 | 
	
		
			
				|  |  | +                  <el-input-number v-model="form.time" label="测试人数"></el-input-number>
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="题目数量" prop="num">
 | 
	
		
			
				|  |  | +                  <el-input-number v-model="form.num" label="题目数量"></el-input-number>
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="测试人数" prop="peopleNum">
 | 
	
		
			
				|  |  | +                   <el-input-number v-model="form.peopleNum" label="测试人数"></el-input-number>
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="排序" prop="sort">
 | 
	
		
			
				|  |  | +                   <el-input-number v-model="form.sort" label="排序"></el-input-number>
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="测试提醒" prop="msg">
 | 
	
		
			
				|  |  | +                  <el-input v-model="form.msg" placeholder="请输入标题" type="textarea"/>
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="描述" prop="descs" >
 | 
	
		
			
				|  |  | +                  <Editor  ref="myeditor"   @on-text-change="updateText"/>
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-form-item label="备注" prop="remark">
 | 
	
		
			
				|  |  | +          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +          <el-row>
 | 
	
		
			
				|  |  | +             <el-col :span="3"><div style="margin-top: 9px;font-weight: bold;float: right; margin-right: 10px;">项目类型</div></el-col>
 | 
	
		
			
				|  |  | +            <el-col :span="21">
 | 
	
		
			
				|  |  | +              <el-table :data="itemTypeJson"   >
 | 
	
		
			
				|  |  | +              <el-table-column label="类型" prop="itemType" align="center" >
 | 
	
		
			
				|  |  | +                <template slot-scope="scope">
 | 
	
		
			
				|  |  | +                  <el-input v-model="scope.row.itemType" ></el-input>
 | 
	
		
			
				|  |  | +                </template>
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +              <el-table-column label="操作" width="150px" align="center">
 | 
	
		
			
				|  |  | +                <template slot-scope="scope" >
 | 
	
		
			
				|  |  | +                    <el-button @click="addRow" size="mini" type="text" >新增</el-button>
 | 
	
		
			
				|  |  | +                    <el-button @click="updateRow(scope.row)" size="mini" type="text" >编辑内容</el-button>
 | 
	
		
			
				|  |  | +                    <el-button @click="deleteRow(scope.$index)"   size="mini" type="text" v-if="itemTypeJson.length>1">删除</el-button>
 | 
	
		
			
				|  |  | +                </template>
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +            </el-table>
 | 
	
		
			
				|  |  | +            </el-col>
 | 
	
		
			
				|  |  | +          </el-row>
 | 
	
		
			
				|  |  | +      </el-form>
 | 
	
		
			
				|  |  | +      <div slot="footer" class="dialog-footer">
 | 
	
		
			
				|  |  | +        <el-button type="primary" @click="submitForm">确 定</el-button>
 | 
	
		
			
				|  |  | +        <el-button @click="cancel">取 消</el-button>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </el-dialog>
 | 
	
		
			
				|  |  | +    <el-dialog title="项目类型" :visible.sync="TypeOpen" width="700px" append-to-body>
 | 
	
		
			
				|  |  | +      <el-form ref="item" :model="item"  label-width="80px">
 | 
	
		
			
				|  |  | +        <el-form-item label="项目类型" prop="itemType">
 | 
	
		
			
				|  |  | +          <el-input v-model="item.itemType" placeholder="请输入项目类型" />
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +        <el-form-item label="分值区间" prop="itemType">
 | 
	
		
			
				|  |  | +         <el-input-number size="small" v-model="item.min" :max="item.max" ></el-input-number> 到 <el-input-number size="small" v-model="item.max" :min="item.min"></el-input-number>
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          <el-row>
 | 
	
		
			
				|  |  | +             <el-col :span="3"><div style="margin-top: 9px;font-weight: bold;float: right; margin-right: 15px;">项目内容</div></el-col>
 | 
	
		
			
				|  |  | +            <el-col :span="21">
 | 
	
		
			
				|  |  | +            <el-table :data="item.item"    :cell-style="{ textAlign: 'center' }"		 :header-cell-style="{textAlign: 'center'}"   >
 | 
	
		
			
				|  |  | +              <el-table-column label="名称" prop="name" >
 | 
	
		
			
				|  |  | +                <template slot-scope="scope">
 | 
	
		
			
				|  |  | +                  <el-input v-model="scope.row.name" ></el-input>
 | 
	
		
			
				|  |  | +                </template>
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +              <el-table-column label="内容" prop="value" width="340px">
 | 
	
		
			
				|  |  | +                <template slot-scope="scope">
 | 
	
		
			
				|  |  | +                  <el-input v-model="scope.row.value" type="textarea" :rows="5"></el-input>
 | 
	
		
			
				|  |  | +                </template>
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +              <el-table-column label="操作" width="100px">
 | 
	
		
			
				|  |  | +                <template slot-scope="scope">
 | 
	
		
			
				|  |  | +                   <el-button @click="deleteType(scope.$index)"   size="mini" type="text" v-if="item.item.length>1">删除</el-button>
 | 
	
		
			
				|  |  | +                    <el-button @click="addType" size="mini" type="text" >新增</el-button>
 | 
	
		
			
				|  |  | +                </template>
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +            </el-table>
 | 
	
		
			
				|  |  | +          </el-col>
 | 
	
		
			
				|  |  | +          </el-row>
 | 
	
		
			
				|  |  | +      </el-form>
 | 
	
		
			
				|  |  | +      <div slot="footer" class="dialog-footer">
 | 
	
		
			
				|  |  | +        <el-button type="primary" @click="TypeOpen = false">确 定</el-button>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </el-dialog>
 | 
	
		
			
				|  |  | +    <el-dialog title="选项管理" :visible.sync="itemOpen" width="700px" append-to-body>
 | 
	
		
			
				|  |  | +        <el-form ref="form" :model="form" :rules="rules" label-width="80px">
 | 
	
		
			
				|  |  | +            <el-row>
 | 
	
		
			
				|  |  | +               <el-col :span="3"><div style="margin-top: 9px;font-weight: bold;float: right; margin-right: 10px;">项目类型</div></el-col>
 | 
	
		
			
				|  |  | +              <el-col :span="21">
 | 
	
		
			
				|  |  | +                <el-table :data="itemTypeJson"   >
 | 
	
		
			
				|  |  | +                <el-table-column label="类型" prop="itemType" align="center" />
 | 
	
		
			
				|  |  | +                <el-table-column label="操作" width="150px" align="center">
 | 
	
		
			
				|  |  | +                  <template slot-scope="scope" >
 | 
	
		
			
				|  |  | +                      <el-button @click="updateitemOpen(scope.row)" size="mini" type="text" >编辑选项</el-button>
 | 
	
		
			
				|  |  | +                  </template>
 | 
	
		
			
				|  |  | +                </el-table-column>
 | 
	
		
			
				|  |  | +              </el-table>
 | 
	
		
			
				|  |  | +              </el-col>
 | 
	
		
			
				|  |  | +            </el-row>
 | 
	
		
			
				|  |  | +        </el-form>
 | 
	
		
			
				|  |  | +      <div slot="footer" class="dialog-footer">
 | 
	
		
			
				|  |  | +        <el-button type="primary" @click="itemOpen = false">确 定</el-button>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </el-dialog>
 | 
	
		
			
				|  |  | +      <el-dialog title="选项内容管理" :visible.sync="testItemOpen" width="700px" append-to-body>
 | 
	
		
			
				|  |  | +          <testTempItem  ref="testTempItemDetails" />
 | 
	
		
			
				|  |  | +        <div slot="footer" class="dialog-footer">
 | 
	
		
			
				|  |  | +          <el-button type="primary" @click="testItemOpen = false">确 定</el-button>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +      </el-dialog>
 | 
	
		
			
				|  |  | +       <el-drawer
 | 
	
		
			
				|  |  | +    	:with-header="false"
 | 
	
		
			
				|  |  | +            size="75%"
 | 
	
		
			
				|  |  | +             :title="show.title" :visible.sync="show.open">
 | 
	
		
			
				|  |  | +         <testTempDetails  ref="Details" />
 | 
	
		
			
				|  |  | +       </el-drawer>
 | 
	
		
			
				|  |  | +  </div>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +import { listTestTemp, getTestTemp, delTestTemp, addTestTemp, updateTestTemp, exportTestTemp } from "@/api/store/testTemp";
 | 
	
		
			
				|  |  | +import testTempDetails from '../components/testTempDetails.vue';
 | 
	
		
			
				|  |  | +import testTempItem from '../testTempItem/index.vue';
 | 
	
		
			
				|  |  | +import Editor from '@/components/Editor/wang';
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  name: "TestTemp",
 | 
	
		
			
				|  |  | +  components: { testTempDetails ,testTempItem,Editor},
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      // 遮罩层
 | 
	
		
			
				|  |  | +      loading: true,
 | 
	
		
			
				|  |  | +      show:{
 | 
	
		
			
				|  |  | +              open:false,
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS",
 | 
	
		
			
				|  |  | +      baseUrl: process.env.VUE_APP_BASE_API,
 | 
	
		
			
				|  |  | +      itemTypeJson: [
 | 
	
		
			
				|  |  | +        { itemType: "类别1", item: [{ name: "名称",value:"内容"}]},
 | 
	
		
			
				|  |  | +      ],
 | 
	
		
			
				|  |  | +      item:[],
 | 
	
		
			
				|  |  | +      // 导出遮罩层
 | 
	
		
			
				|  |  | +      exportLoading: false,
 | 
	
		
			
				|  |  | +      // 选中数组
 | 
	
		
			
				|  |  | +      ids: [],
 | 
	
		
			
				|  |  | +      // 非单个禁用
 | 
	
		
			
				|  |  | +      single: true,
 | 
	
		
			
				|  |  | +      // 非多个禁用
 | 
	
		
			
				|  |  | +      multiple: true,
 | 
	
		
			
				|  |  | +      // 显示搜索条件
 | 
	
		
			
				|  |  | +      showSearch: true,
 | 
	
		
			
				|  |  | +      // 总条数
 | 
	
		
			
				|  |  | +      total: 0,
 | 
	
		
			
				|  |  | +      // 测一测模板表格数据
 | 
	
		
			
				|  |  | +      testTempList: [],
 | 
	
		
			
				|  |  | +      // 弹出层标题
 | 
	
		
			
				|  |  | +      title: "",
 | 
	
		
			
				|  |  | +      // 是否显示弹出层
 | 
	
		
			
				|  |  | +      itemOpen:false,
 | 
	
		
			
				|  |  | +      TypeOpen:false,
 | 
	
		
			
				|  |  | +      testItemOpen:false,
 | 
	
		
			
				|  |  | +      open: false,
 | 
	
		
			
				|  |  | +      // 状态字典
 | 
	
		
			
				|  |  | +      statusOptions: [],
 | 
	
		
			
				|  |  | +      // 查询参数
 | 
	
		
			
				|  |  | +      queryParams: {
 | 
	
		
			
				|  |  | +        pageNum: 1,
 | 
	
		
			
				|  |  | +        pageSize: 10,
 | 
	
		
			
				|  |  | +        name: null,
 | 
	
		
			
				|  |  | +        analysis: null,
 | 
	
		
			
				|  |  | +        drugPlan: null,
 | 
	
		
			
				|  |  | +        foodPlan: null,
 | 
	
		
			
				|  |  | +        mentalPlan: null,
 | 
	
		
			
				|  |  | +        livingPlan: null,
 | 
	
		
			
				|  |  | +        createTime: null,
 | 
	
		
			
				|  |  | +        upateTime: null,
 | 
	
		
			
				|  |  | +        status: null,
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      // 表单参数
 | 
	
		
			
				|  |  | +      form: {},
 | 
	
		
			
				|  |  | +      // 表单校验
 | 
	
		
			
				|  |  | +      rules: {
 | 
	
		
			
				|  |  | +        name: [
 | 
	
		
			
				|  |  | +          { required: true, message: "名称不能为空", trigger: "blur" }
 | 
	
		
			
				|  |  | +        ],
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        status: [
 | 
	
		
			
				|  |  | +          { required: true, message: "状态不能为空", trigger: "blur" }
 | 
	
		
			
				|  |  | +        ],
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  created() {
 | 
	
		
			
				|  |  | +    this.getList();
 | 
	
		
			
				|  |  | +    this.getDicts("sys_company_status").then(response => {
 | 
	
		
			
				|  |  | +      this.statusOptions = response.data;
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    handleAvatarSuccess(res, file) {
 | 
	
		
			
				|  |  | +        if(res.code==200){
 | 
	
		
			
				|  |  | +          this.form.img=res.url;
 | 
	
		
			
				|  |  | +          this.$forceUpdate()
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        else{
 | 
	
		
			
				|  |  | +          this.msgError(res.msg);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    beforeAvatarUpload(file) {
 | 
	
		
			
				|  |  | +      const isLt1M = file.size / 1024 / 1024 < 1;
 | 
	
		
			
				|  |  | +      if (!isLt1M) {
 | 
	
		
			
				|  |  | +        this.$message.error('上传图片大小不能超过 1MB!');
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      return   isLt1M;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    updateText(text){
 | 
	
		
			
				|  |  | +         this.form.descs=text
 | 
	
		
			
				|  |  | +       },
 | 
	
		
			
				|  |  | +    updateitemOpen(row){
 | 
	
		
			
				|  |  | +      setTimeout(() => {
 | 
	
		
			
				|  |  | +           this.$refs.testTempItemDetails.getDetails(row.itemType,this.form.tempId);
 | 
	
		
			
				|  |  | +      }, 1);
 | 
	
		
			
				|  |  | +      this.testItemOpen=true;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    updateItem(row){
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      this.reset();
 | 
	
		
			
				|  |  | +      getTestTemp(row.tempId).then(response => {
 | 
	
		
			
				|  |  | +        this.form = response.data;
 | 
	
		
			
				|  |  | +        this.itemTypeJson=  JSON.parse(this.form.itemTypeJson)
 | 
	
		
			
				|  |  | +        this.itemOpen=true;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    addRow() {
 | 
	
		
			
				|  |  | +         this.itemTypeJson.push({ itemType: "类别1", item: [{ name: "名称",value:"内容"}]});
 | 
	
		
			
				|  |  | +       },
 | 
	
		
			
				|  |  | +      deleteRow(index) {
 | 
	
		
			
				|  |  | +        this.itemTypeJson.splice(index, 1);
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      addType() {
 | 
	
		
			
				|  |  | +           this.item.item.push({name: "名称",value:"内容"});
 | 
	
		
			
				|  |  | +         },
 | 
	
		
			
				|  |  | +        deleteType(index) {
 | 
	
		
			
				|  |  | +          this.item.item.splice(index, 1);
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      updateRow(row){
 | 
	
		
			
				|  |  | +        this.item=row;
 | 
	
		
			
				|  |  | +        this.TypeOpen=true
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    /** 查询测一测模板列表 */
 | 
	
		
			
				|  |  | +    getList() {
 | 
	
		
			
				|  |  | +      this.loading = true;
 | 
	
		
			
				|  |  | +      listTestTemp(this.queryParams).then(response => {
 | 
	
		
			
				|  |  | +        this.testTempList = response.rows;
 | 
	
		
			
				|  |  | +        this.total = response.total;
 | 
	
		
			
				|  |  | +        this.loading = false;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +        handledetails(row){
 | 
	
		
			
				|  |  | +            this.show.open=true;
 | 
	
		
			
				|  |  | +            setTimeout(() => {
 | 
	
		
			
				|  |  | +                 this.$refs.Details.getDetails(row.tempId);
 | 
	
		
			
				|  |  | +            }, 1);
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +    // 取消按钮
 | 
	
		
			
				|  |  | +    cancel() {
 | 
	
		
			
				|  |  | +      this.open = false;
 | 
	
		
			
				|  |  | +      this.reset();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 表单重置
 | 
	
		
			
				|  |  | +    reset() {
 | 
	
		
			
				|  |  | +      this.form = {
 | 
	
		
			
				|  |  | +        tempId: null,
 | 
	
		
			
				|  |  | +        name: null,
 | 
	
		
			
				|  |  | +        analysis: null,
 | 
	
		
			
				|  |  | +        drugPlan: null,
 | 
	
		
			
				|  |  | +        foodPlan: null,
 | 
	
		
			
				|  |  | +        mentalPlan: null,
 | 
	
		
			
				|  |  | +        livingPlan: null,
 | 
	
		
			
				|  |  | +        createTime: null,
 | 
	
		
			
				|  |  | +        upateTime: null,
 | 
	
		
			
				|  |  | +        exercisePlan:null,
 | 
	
		
			
				|  |  | +        status: 0,
 | 
	
		
			
				|  |  | +        remark: null,
 | 
	
		
			
				|  |  | +        itemTypeJson:null,
 | 
	
		
			
				|  |  | +        tempCode:null,
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +      this.resetForm("form");
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 搜索按钮操作 */
 | 
	
		
			
				|  |  | +    handleQuery() {
 | 
	
		
			
				|  |  | +      this.queryParams.pageNum = 1;
 | 
	
		
			
				|  |  | +      this.getList();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 重置按钮操作 */
 | 
	
		
			
				|  |  | +    resetQuery() {
 | 
	
		
			
				|  |  | +      this.resetForm("queryForm");
 | 
	
		
			
				|  |  | +      this.handleQuery();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 多选框选中数据
 | 
	
		
			
				|  |  | +    handleSelectionChange(selection) {
 | 
	
		
			
				|  |  | +      this.ids = selection.map(item => item.tempId)
 | 
	
		
			
				|  |  | +      this.single = selection.length!==1
 | 
	
		
			
				|  |  | +      this.multiple = !selection.length
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 新增按钮操作 */
 | 
	
		
			
				|  |  | +    handleAdd() {
 | 
	
		
			
				|  |  | +      this.reset();
 | 
	
		
			
				|  |  | +      setTimeout(() => {
 | 
	
		
			
				|  |  | +                this.$refs.myeditor.setText("");
 | 
	
		
			
				|  |  | +              }, 500);
 | 
	
		
			
				|  |  | +      this.itemTypeJson= [
 | 
	
		
			
				|  |  | +        { itemType: "类别1", item: [{ name: "名称",value:"内容"}]},
 | 
	
		
			
				|  |  | +      ];
 | 
	
		
			
				|  |  | +      this.open = true;
 | 
	
		
			
				|  |  | +      this.title = "添加测一测模板";
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 修改按钮操作 */
 | 
	
		
			
				|  |  | +    handleUpdate(row) {
 | 
	
		
			
				|  |  | +      this.reset();
 | 
	
		
			
				|  |  | +      const tempId = row.tempId || this.ids
 | 
	
		
			
				|  |  | +      getTestTemp(tempId).then(response => {
 | 
	
		
			
				|  |  | +        this.form = response.data;
 | 
	
		
			
				|  |  | +        this.itemTypeJson=  JSON.parse(this.form.itemTypeJson)
 | 
	
		
			
				|  |  | +        this.open = true;
 | 
	
		
			
				|  |  | +        this.title = "修改测一测模板";
 | 
	
		
			
				|  |  | +        setTimeout(() => {
 | 
	
		
			
				|  |  | +                  if(this.form.descs==null){
 | 
	
		
			
				|  |  | +                    this.$refs.myeditor.setText("");
 | 
	
		
			
				|  |  | +                  }
 | 
	
		
			
				|  |  | +                  else{
 | 
	
		
			
				|  |  | +                    this.$refs.myeditor.setText(this.form.descs);
 | 
	
		
			
				|  |  | +                  }
 | 
	
		
			
				|  |  | +                }, 1);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    hasDuplicateItemType(arr) {
 | 
	
		
			
				|  |  | +      const itemTypes = new Set();
 | 
	
		
			
				|  |  | +      for (const obj of arr) {
 | 
	
		
			
				|  |  | +        if (itemTypes.has(obj.itemType)) {
 | 
	
		
			
				|  |  | +          return true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        itemTypes.add(obj.itemType);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      return false;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 提交按钮 */
 | 
	
		
			
				|  |  | +    submitForm() {
 | 
	
		
			
				|  |  | +      this.$refs["form"].validate(valid => {
 | 
	
		
			
				|  |  | +        if (valid) {
 | 
	
		
			
				|  |  | +            for (var i = 0; i < this.itemTypeJson.length; i++) {
 | 
	
		
			
				|  |  | +              if (!this.itemTypeJson[i].itemType) {
 | 
	
		
			
				|  |  | +                this.$message("类型不能为空")
 | 
	
		
			
				|  |  | +                return;
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(this.hasDuplicateItemType(this.itemTypeJson)){
 | 
	
		
			
				|  |  | +              this.$message("类型名称重复");
 | 
	
		
			
				|  |  | +              return;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            this.form.itemTypeJson=JSON.stringify(this.itemTypeJson )
 | 
	
		
			
				|  |  | +          if (this.form.tempId != null) {
 | 
	
		
			
				|  |  | +            updateTestTemp(this.form).then(response => {
 | 
	
		
			
				|  |  | +              this.msgSuccess("修改成功");
 | 
	
		
			
				|  |  | +              this.open = false;
 | 
	
		
			
				|  |  | +              this.getList();
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          } else {
 | 
	
		
			
				|  |  | +            addTestTemp(this.form).then(response => {
 | 
	
		
			
				|  |  | +              this.msgSuccess("新增成功");
 | 
	
		
			
				|  |  | +              this.open = false;
 | 
	
		
			
				|  |  | +              this.getList();
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 删除按钮操作 */
 | 
	
		
			
				|  |  | +    handleDelete(row) {
 | 
	
		
			
				|  |  | +      const tempIds = row.tempId || this.ids;
 | 
	
		
			
				|  |  | +      this.$confirm('是否确认删除测一测模板编号为"' + tempIds + '"的数据项?', "警告", {
 | 
	
		
			
				|  |  | +          confirmButtonText: "确定",
 | 
	
		
			
				|  |  | +          cancelButtonText: "取消",
 | 
	
		
			
				|  |  | +          type: "warning"
 | 
	
		
			
				|  |  | +        }).then(function() {
 | 
	
		
			
				|  |  | +          return delTestTemp(tempIds);
 | 
	
		
			
				|  |  | +        }).then(() => {
 | 
	
		
			
				|  |  | +          this.getList();
 | 
	
		
			
				|  |  | +          this.msgSuccess("删除成功");
 | 
	
		
			
				|  |  | +        }).catch(() => {});
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 导出按钮操作 */
 | 
	
		
			
				|  |  | +    handleExport() {
 | 
	
		
			
				|  |  | +      const queryParams = this.queryParams;
 | 
	
		
			
				|  |  | +      this.$confirm('是否确认导出所有测一测模板数据项?', "警告", {
 | 
	
		
			
				|  |  | +          confirmButtonText: "确定",
 | 
	
		
			
				|  |  | +          cancelButtonText: "取消",
 | 
	
		
			
				|  |  | +          type: "warning"
 | 
	
		
			
				|  |  | +        }).then(() => {
 | 
	
		
			
				|  |  | +          this.exportLoading = true;
 | 
	
		
			
				|  |  | +          return exportTestTemp(queryParams);
 | 
	
		
			
				|  |  | +        }).then(response => {
 | 
	
		
			
				|  |  | +          this.download(response.msg);
 | 
	
		
			
				|  |  | +          this.exportLoading = false;
 | 
	
		
			
				|  |  | +        }).catch(() => {});
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +<style>
 | 
	
		
			
				|  |  | +  .el-table .el-table__header th {
 | 
	
		
			
				|  |  | +    height: 10px; /* 设置你想要的高度 */
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  .avatar-uploader .el-upload {
 | 
	
		
			
				|  |  | +       border: 1px dashed #d9d9d9;
 | 
	
		
			
				|  |  | +       border-radius: 6px;
 | 
	
		
			
				|  |  | +       cursor: pointer;
 | 
	
		
			
				|  |  | +       position: relative;
 | 
	
		
			
				|  |  | +       overflow: hidden;
 | 
	
		
			
				|  |  | +     }
 | 
	
		
			
				|  |  | +     .avatar-uploader .el-upload:hover {
 | 
	
		
			
				|  |  | +       border-color: #409EFF;
 | 
	
		
			
				|  |  | +     }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +     .avatar-uploader-icon {
 | 
	
		
			
				|  |  | +       font-size: 28px;
 | 
	
		
			
				|  |  | +       color: #8c939d;
 | 
	
		
			
				|  |  | +       width: 150px;
 | 
	
		
			
				|  |  | +       height: 150px;
 | 
	
		
			
				|  |  | +       line-height: 150px;
 | 
	
		
			
				|  |  | +       text-align: center;
 | 
	
		
			
				|  |  | +     }
 | 
	
		
			
				|  |  | +</style>
 |