Commit e6276ef236f80989bfc764bd9bf7d95978d17dda

Authored by yangzhi
1 parent a63af57c

超哥牛批

src/App.vue
... ... @@ -13,6 +13,9 @@ export default {
13 13 .flex{
14 14 display: flex;
15 15 }
  16 +.aligin-center{
  17 + align-items: center;
  18 +}
16 19 .page-box{
17 20 display: flex;
18 21 align-items: center;
... ...
src/common/config.js 0 → 100644
  1 +let BASE_URL = 'https://inteview.t1j2.com'
  2 +export {
  3 + BASE_URL
  4 +}
0 5 \ No newline at end of file
... ...
src/common/mixins.js
1 1 import {
2 2 getToken
3 3 } from '@/utils/auth'
  4 +import { BASE_URL } from '@/common/config'
4 5 export default {
5 6 data() {
6 7 return {
7   - Authorization: ''
  8 + Authorization: '',
  9 + BASE_URL: BASE_URL
8 10 };
9 11 },
10 12 created() {
... ...
src/views/user/picuserimport.vue
... ... @@ -36,17 +36,18 @@
36 36 >
37 37 <el-upload
38 38 class="upload-demo"
  39 + ref="uploader"
39 40 action="/api//UserInfo/ResumeIdentification"
40 41 multiple
41 42 :headers="{
42 43 Authorization: Authorization,
43 44 }"
44   - :limit="1"
  45 + :limit="100"
45 46 :show-file-list="false"
46 47 :on-exceed="handleExceed"
47 48 :on-success="handleSuccess"
48 49 >
49   - <el-button size="small" type="primary">上传待解析图片</el-button>
  50 + <el-button size="small" type="primary">上传简历</el-button>
50 51 </el-upload>
51 52 </div>
52 53 </div>
... ... @@ -172,6 +173,7 @@ export default {
172 173 methods: {
173 174 handleExceed() {},
174 175 handleSuccess(res) {
  176 + this.$refs.uploader.clearFiles();
175 177 this.search();
176 178 },
177 179 search(){
... ...
src/views/user/userlist.vue
1 1 <template>
2 2 <div class="app-container">
3 3 <div class="seetingsDiv" style="">
4   - <div class="flex" style="width:75%">
5   -
  4 + <div class="flex" style="width: 75%">
6 5 <el-form :inline="true" class="demo-form-inline">
7 6 <el-form-item label="关键字">
8   - <el-input placeholder="输入关键字搜索" v-model="query.keyword"></el-input>
  7 + <el-input
  8 + placeholder="输入关键字搜索"
  9 + v-model="query.keyword"
  10 + ></el-input>
9 11 </el-form-item>
10 12 <el-form-item label="最高学历">
11 13 <el-select v-model="query.xueli" placeholder="最高学历">
... ... @@ -21,53 +23,111 @@
21 23 </el-select>
22 24 </el-form-item>
23 25  
24   -
25 26 <el-form-item>
26 27 <el-button type="success" @click="search">搜索</el-button>
27 28 <el-button type="success" @click="resetSearch">重置</el-button>
28   - <el-button v-if="selectedList.length" type="primary" @click="handleInviteInterview">邀请面试</el-button>
  29 + <el-button
  30 + v-if="selectedList.length"
  31 + type="primary"
  32 + @click="handleInviteInterview"
  33 + >邀请面试</el-button
  34 + >
29 35 </el-form-item>
30 36 </el-form>
31   -
32   -
33   -
34 37 </div>
35 38  
36   - <el-upload class="upload-demo" action="/api/Account/importUsers?UserClassId=0" multiple :limit="1"
37   - :show-file-list="false" :on-exceed="handleExceed" :on-success="handleSuccess" :file-list="fileList">
38   - <el-button size="small" type="primary">导入用户</el-button>
39   - </el-upload>
  39 + <div class="flex aligin-center">
  40 + <el-link :href="BASE_URL+'/temp/用户导入模板.xlsx'" target="_blank" type="primary"
  41 + >下载模板</el-link
  42 + >
  43 + <el-upload
  44 + class="upload-demo"
  45 + action="/api/Account/importUsers?UserClassId=0"
  46 + multiple
  47 + :limit="1"
  48 + :show-file-list="false"
  49 + :on-exceed="handleExceed"
  50 + :on-success="handleSuccess"
  51 + :file-list="fileList"
  52 + >
  53 + <el-button size="small" type="primary">导入用户</el-button>
  54 + </el-upload>
  55 + </div>
40 56 </div>
41   - <el-container style=" border: 1px solid #eee;">
42   - <el-aside width="255px"
43   - style="width: 255px;background-color: #fff;padding: 10px;border-right: 1px solid #dcdfe6;">
44   - <div style="float:left">
45   - 所属分类
46   - </div>
47   - <div style="text-align:right;">
48   - <el-button size="mini" type="primary" icon="el-icon-plus" circle @click="addcat"></el-button>
49   - <el-button size="mini" type="warning" icon="el-icon-edit" circle @click="editcat"></el-button>
50   - <el-button size="mini" type="danger" icon="el-icon-delete" @click="delcat" circle></el-button>
  57 + <el-container style="border: 1px solid #eee">
  58 + <el-aside
  59 + width="255px"
  60 + style="
  61 + width: 255px;
  62 + background-color: #fff;
  63 + padding: 10px;
  64 + border-right: 1px solid #dcdfe6;
  65 + "
  66 + >
  67 + <div style="float: left">所属分类</div>
  68 + <div style="text-align: right">
  69 + <el-button
  70 + size="mini"
  71 + type="primary"
  72 + icon="el-icon-plus"
  73 + circle
  74 + @click="addcat"
  75 + ></el-button>
  76 + <el-button
  77 + size="mini"
  78 + type="warning"
  79 + icon="el-icon-edit"
  80 + circle
  81 + @click="editcat"
  82 + ></el-button>
  83 + <el-button
  84 + size="mini"
  85 + type="danger"
  86 + icon="el-icon-delete"
  87 + @click="delcat"
  88 + circle
  89 + ></el-button>
51 90 </div>
52   - <el-input size="small " placeholder="分类筛选" v-model="filterText" style="margin-bottom:10px;margin-top:10px;">
  91 + <el-input
  92 + size="small "
  93 + placeholder="分类筛选"
  94 + v-model="filterText"
  95 + style="margin-bottom: 10px; margin-top: 10px"
  96 + >
53 97 </el-input>
54   - <el-tree :data="data" :props="props" ref="tree" :filter-node-method="filterNode" @node-click="handleNodeClick">
  98 + <el-tree
  99 + :data="data"
  100 + :props="props"
  101 + ref="tree"
  102 + :filter-node-method="filterNode"
  103 + @node-click="handleNodeClick"
  104 + >
55 105 </el-tree>
56   -
57 106 </el-aside>
58 107  
59 108 <el-main>
60   -
61   -
62 109 <div class="filter-container">
63   - <el-table ref="userList" :data="userList" id="QuestionTable" border style="
64   - width: 100%;
65   - border-radius: 5px;
66   - box-shadow: 0 0 10px #efefef;
67   - margin-top: 10px;
68   - " @selection-change="handleSelectionChange" :stripe="true">
  110 + <el-table
  111 + ref="userList"
  112 + :data="userList"
  113 + id="QuestionTable"
  114 + border
  115 + style="
  116 + width: 100%;
  117 + border-radius: 5px;
  118 + box-shadow: 0 0 10px #efefef;
  119 + margin-top: 10px;
  120 + "
  121 + @selection-change="handleSelectionChange"
  122 + :stripe="true"
  123 + >
69 124 <el-table-column type="selection" width="55"> </el-table-column>
70   - <el-table-column type="index" prop="date" width="50" align="center"></el-table-column>
  125 + <el-table-column
  126 + type="index"
  127 + prop="date"
  128 + width="50"
  129 + align="center"
  130 + ></el-table-column>
71 131 <el-table-column prop="date" label="姓名">
72 132 <template slot-scope="scope">
73 133 <span>{{ scope.row.fullName }}</span>
... ... @@ -75,36 +135,51 @@
75 135 </el-table-column>
76 136 <el-table-column prop="date" label="电话号码">
77 137 <template slot-scope="scope">
78   - <el-tooltip class="item" effect="dark" :content="scope.row.phone" placement="top-start">
  138 + <el-tooltip
  139 + class="item"
  140 + effect="dark"
  141 + :content="scope.row.phone"
  142 + placement="top-start"
  143 + >
79 144 <span>{{ scope.row.phone1 }}</span>
80 145 </el-tooltip>
81 146 </template>
82 147 </el-table-column>
83 148  
84 149 <el-table-column prop="date" label="近期测试">
85   - <template slot-scope="{row}">
86   - <el-button v-if="row.TestPaperTitle || 1==1" type="text" icon="el-icon-star-off"
87   - @click="handleTestHitory(row)"></el-button>
88   - <span>{{row.TestPaperTitle || '无'}}</span>
89   -
  150 + <template slot-scope="{ row }">
  151 + <el-button
  152 + v-if="row.TestPaperTitle || 1 == 1"
  153 + type="text"
  154 + icon="el-icon-star-off"
  155 + @click="handleTestHitory(row)"
  156 + ></el-button>
  157 + <span>{{ row.TestPaperTitle || "无" }}</span>
90 158 </template>
91 159 </el-table-column>
92 160 <el-table-column prop="date" label="电话号码">
93 161 <template slot-scope="scope">
94   - <el-tooltip class="item" effect="dark" :content="scope.row.phone" placement="top-start">
  162 + <el-tooltip
  163 + class="item"
  164 + effect="dark"
  165 + :content="scope.row.phone"
  166 + placement="top-start"
  167 + >
95 168 <span>{{ scope.row.phone1 }}</span>
96 169 </el-tooltip>
97 170 </template>
98 171 </el-table-column>
99 172  
100   -
101   - <el-table-column prop="date" label="性别" sortable> </el-table-column>
102   - <el-table-column prop="date" label="民族" sortable> </el-table-column>
103   - <el-table-column prop="date" label="专业" sortable> </el-table-column>
104   - <el-table-column prop="date" label="毕业院校" sortable> </el-table-column>
105   - <el-table-column prop="date" label="最高学历" sortable> </el-table-column>
106   -
107   -
  173 + <el-table-column prop="date" label="性别" sortable>
  174 + </el-table-column>
  175 + <el-table-column prop="date" label="民族" sortable>
  176 + </el-table-column>
  177 + <el-table-column prop="date" label="专业" sortable>
  178 + </el-table-column>
  179 + <el-table-column prop="date" label="毕业院校" sortable>
  180 + </el-table-column>
  181 + <el-table-column prop="date" label="最高学历" sortable>
  182 + </el-table-column>
108 183  
109 184 <el-table-column prop="addTime" label="录入时间" sortable>
110 185 <template slot-scope="scope">
... ... @@ -114,19 +189,39 @@
114 189  
115 190 <el-table-column prop="date" label="操作" width="180">
116 191 <template slot-scope="scope">
117   - <el-button type="text" icon="el-icon-edit" @click="handleEdit(scope.row)" circle>编辑</el-button>
118   - <el-button type="text" icon="el-icon-delete" circle @click="handleDelete(scope.row,scope.$index)">删除</el-button>
  192 + <el-button
  193 + type="text"
  194 + icon="el-icon-edit"
  195 + @click="handleEdit(scope.row)"
  196 + circle
  197 + >编辑</el-button
  198 + >
  199 + <el-button
  200 + type="text"
  201 + icon="el-icon-delete"
  202 + circle
  203 + @click="handleDelete(scope.row, scope.$index)"
  204 + >删除</el-button
  205 + >
119 206 </template>
120 207 </el-table-column>
121 208 </el-table>
122   - <el-pagination background @current-change="currentchange"
123   - style="position: static; bottom: 3px; text-align: center; margin-top: 5px" :page-size="this.query.PageSize"
124   - layout="total,prev, pager, next" :total="Count">
  209 + <el-pagination
  210 + background
  211 + @current-change="currentchange"
  212 + style="
  213 + position: static;
  214 + bottom: 3px;
  215 + text-align: center;
  216 + margin-top: 5px;
  217 + "
  218 + :page-size="this.query.PageSize"
  219 + layout="total,prev, pager, next"
  220 + :total="Count"
  221 + >
125 222 </el-pagination>
126 223 </div>
127   -
128 224 </el-main>
129   -
130 225 </el-container>
131 226  
132 227 <el-dialog title="邀请面试-试卷选择" :visible.sync="dialogFormVisible">
... ... @@ -135,15 +230,24 @@
135 230 <el-input v-model="form.name" autocomplete="off"></el-input>
136 231 </el-form-item> -->
137 232 <el-form-item label="试卷">
138   - <el-select v-model="form.TestPaperId" placeholder="请选择试卷" style="width:80%">
139   - <el-option :value="item.id" v-for="item in testpaperlist">{{'['+item.id+'] '+(item.TestPaperTitle ||
140   - '未命名')}}</el-option>
  233 + <el-select
  234 + v-model="form.TestPaperId"
  235 + placeholder="请选择试卷"
  236 + style="width: 80%"
  237 + >
  238 + <el-option :value="item.id" v-for="item in testpaperlist">{{
  239 + "[" + item.id + "] " + (item.TestPaperTitle || "未命名")
  240 + }}</el-option>
141 241 </el-select>
142 242 </el-form-item>
143 243 <el-form-item label="允许测评次数">
144   - <el-input v-model="form.NumberOfAnswers" type="number" placeholder="请输入允许测评次数" style="width:30%"/>
  244 + <el-input
  245 + v-model="form.NumberOfAnswers"
  246 + type="number"
  247 + placeholder="请输入允许测评次数"
  248 + style="width: 30%"
  249 + />
145 250 </el-form-item>
146   -
147 251 </el-form>
148 252 <div slot="footer" class="dialog-footer">
149 253 <el-button @click="dialogFormVisible = false">取 消</el-button>
... ... @@ -151,54 +255,89 @@
151 255 </div>
152 256 </el-dialog>
153 257  
154   - <el-dialog title="测试历史记录" :visible.sync="dialogTableVisible" @close=" gridData =[]" height="800" width="80%">
  258 + <el-dialog
  259 + title="测试历史记录"
  260 + :visible.sync="dialogTableVisible"
  261 + @close="gridData = []"
  262 + height="800"
  263 + width="80%"
  264 + >
155 265 <el-table :data="gridData" height="400">
156   - <el-table-column property="TestPaperTitle" label="试卷" sortable></el-table-column>
157   - <el-table-column property="AnswerTime" label="测试时间" width="180" sortable>
  266 + <el-table-column
  267 + property="TestPaperTitle"
  268 + label="试卷"
  269 + sortable
  270 + ></el-table-column>
  271 + <el-table-column
  272 + property="AnswerTime"
  273 + label="测试时间"
  274 + width="180"
  275 + sortable
  276 + >
158 277 <template slot-scope="scope">
159 278 <span>{{ scope.row.AnswerTime.replace("T", " ") }}</span>
160 279 </template>
161   -
162 280 </el-table-column>
163   - <el-table-column property="StartTime" label="开始时间" width="180" sortable>
  281 + <el-table-column
  282 + property="StartTime"
  283 + label="开始时间"
  284 + width="180"
  285 + sortable
  286 + >
164 287 <template slot-scope="scope">
165 288 <span>{{ scope.row.StartTime.replace("T", " ") }}</span>
166 289 </template>
167 290 </el-table-column>
168   - <el-table-column property="address" label="结束时间" width="180" sortable>
  291 + <el-table-column
  292 + property="address"
  293 + label="结束时间"
  294 + width="180"
  295 + sortable
  296 + >
169 297 <template slot-scope="scope">
170 298 <span>{{ scope.row.EndTime.replace("T", " ") }}</span>
171 299 </template>
172 300 </el-table-column>
173   - <el-table-column property="Achievement" label="成绩" sortable></el-table-column>
174   - <el-table-column label="操作">
  301 + <el-table-column
  302 + property="Achievement"
  303 + label="成绩"
  304 + sortable
  305 + ></el-table-column>
  306 + <el-table-column label="操作">
175 307 <template slot-scope="scope">
176   - <el-button type="success" @click="handleWatchLive(scope.row)">观看直播</el-button>
177   - <el-button type="primary" @click="handleAnswerDetail(scope.row)">答题详情</el-button>
  308 + <el-button type="success" @click="handleWatchLive(scope.row)"
  309 + >观看直播</el-button
  310 + >
  311 + <el-button type="primary" @click="handleAnswerDetail(scope.row)"
  312 + >答题详情</el-button
  313 + >
178 314 </template>
179 315 </el-table-column>
180   -
181 316 </el-table>
182 317  
183   - <div style="text-align:right;margin-top:20px">
184   -
  318 + <div style="text-align: right; margin-top: 20px">
185 319 <el-button type="primary" @click="dialogTableVisible = false">
186 320 确定
187 321 </el-button>
188 322 </div>
189 323 </el-dialog>
190 324  
191   -
192   -
193   - <el-dialog :visible.sync="dialogVisiblecat" :title="dialogTypecat === 'update' ? '修改' : '新增'" width="455px" >
194   - <el-form ref="dataForm" :model="temp" label-width="120px" label-position="right" >
195   -
  325 + <el-dialog
  326 + :visible.sync="dialogVisiblecat"
  327 + :title="dialogTypecat === 'update' ? '修改' : '新增'"
  328 + width="455px"
  329 + >
  330 + <el-form
  331 + ref="dataForm"
  332 + :model="temp"
  333 + label-width="120px"
  334 + label-position="right"
  335 + >
196 336 <el-form-item label="分类名称">
197 337 <el-input v-model="temp.ClassTitle" placeholder="请输入名称" />
198 338 </el-form-item>
199   -
200 339 </el-form>
201   - <div style="text-align:right;">
  340 + <div style="text-align: right">
202 341 <el-button type="danger" @click="dialogVisiblecat = false">
203 342 取消
204 343 </el-button>
... ... @@ -208,14 +347,31 @@
208 347 </div>
209 348 </el-dialog>
210 349  
211   -
212   - <el-dialog title="人才用户信息" :visible.sync="dialogClassIVIsible" width="450">
213   - <el-form ref="adminUserInfo" :model="adminUserInfo" label-width="90px" style="margin-left: 40px;">
  350 + <el-dialog
  351 + title="人才用户信息"
  352 + :visible.sync="dialogClassIVIsible"
  353 + width="450"
  354 + >
  355 + <el-form
  356 + ref="adminUserInfo"
  357 + :model="adminUserInfo"
  358 + label-width="90px"
  359 + style="margin-left: 40px"
  360 + >
214 361 <el-form-item label="名称" prop="fullName">
215   - <el-input v-model="adminUserInfo.fullName " placeholder="请输入姓名" style="width: 40%;"></el-input>
  362 + <el-input
  363 + v-model="adminUserInfo.fullName"
  364 + placeholder="请输入姓名"
  365 + style="width: 40%"
  366 + ></el-input>
216 367 </el-form-item>
217 368 <el-form-item label="电话号码">
218   - <el-input v-model="adminUserInfo.phone " placeholder="请输入电话号码" style="width: 40%;" maxlength="11"></el-input>
  369 + <el-input
  370 + v-model="adminUserInfo.phone"
  371 + placeholder="请输入电话号码"
  372 + style="width: 40%"
  373 + maxlength="11"
  374 + ></el-input>
219 375 </el-form-item>
220 376 <el-form-item label="最高学历">
221 377 <el-select v-model="adminUserInfo.xueli" placeholder="最高学历">
... ... @@ -226,7 +382,11 @@
226 382  
227 383 <el-form-item label="民族">
228 384 <el-select v-model="adminUserInfo.minzu" placeholder="民族">
229   - <el-option v-for="item in mzlist" :label="item" :value="item"></el-option>
  385 + <el-option
  386 + v-for="item in mzlist"
  387 + :label="item"
  388 + :value="item"
  389 + ></el-option>
230 390 </el-select>
231 391 </el-form-item>
232 392 <el-form-item label="性别">
... ... @@ -235,345 +395,398 @@
235 395 <el-option label="女" value="0"></el-option>
236 396 </el-select>
237 397 </el-form-item>
238   - <el-form-item label="专业" style="margin-top: 40px;" prop="username">
239   - <el-input v-model="adminUserInfo.zhuanye" placeholder="请输入专业" style="width: 40%;"></el-input>
  398 + <el-form-item label="专业" style="margin-top: 40px" prop="username">
  399 + <el-input
  400 + v-model="adminUserInfo.zhuanye"
  401 + placeholder="请输入专业"
  402 + style="width: 40%"
  403 + ></el-input>
240 404 </el-form-item>
241   - <el-form-item label="毕业院校" style="margin-top: 40px;" prop="username">
242   - <el-input v-model="adminUserInfo.byyx" placeholder="请输入毕业院校" style="width: 40%;"></el-input>
  405 + <el-form-item label="毕业院校" style="margin-top: 40px" prop="username">
  406 + <el-input
  407 + v-model="adminUserInfo.byyx"
  408 + placeholder="请输入毕业院校"
  409 + style="width: 40%"
  410 + ></el-input>
243 411 </el-form-item>
244 412  
245 413 <!-- <el-form-item label="密码" prop="password" >
246 414 <el-input v-model="adminUserInfo.password " placeholder="请输入密码 不填默认不修改" show-password style="width: 40%;"></el-input>
247 415 </el-form-item> -->
248   - <el-form-item style="text-align: right;">
249   - <el-button @click="dialogClassIVIsible=false">取消</el-button>
250   - <el-button type="primary" @click="submitForm('adminUserInfo')">提交</el-button>
  416 + <el-form-item style="text-align: right">
  417 + <el-button @click="dialogClassIVIsible = false">取消</el-button>
  418 + <el-button type="primary" @click="submitForm('adminUserInfo')"
  419 + >提交</el-button
  420 + >
251 421 </el-form-item>
252 422 </el-form>
253 423  
254   - <div style="clear: both;"></div>
  424 + <div style="clear: both"></div>
255 425 </el-dialog>
256   -
257 426 </div>
258 427 </template>
259 428  
260 429 <script>
261   - import { ImportUserByExcel, GetUserList, AddInvitationAnswerMultiple,UsersDelete } from "@/api/user";
262   - import { GetUserClassList, UserClassCreate, UserClassUpdate, UserClassDelete } from "@/api/userclass";
263   - import { GetHistoryList } from '@/api/HistoryAnswer'
264   -
265   - import {
266   - getTestPaperList
267   - } from '@/api/TestPaper'
268   - export default {
269   - data() {
270   - return {
271   - loading:false,
272   - dialogFormVisible: false,
273   - dialogTableVisible: false,
274   - dialogTypecat: 'create',
275   - testpaperlist: [],
276   - form: {
277   -
278   - NumberOfAnswers: 3
279   - },
280   - userList: [],
281   - data: [],
282   - dialogVisiblecat: false,
283   - filterText: '',
284   - gridData: [],
285   - Count: 0,
286   - adminUserInfo: {},
287   - temp: {
288   - ParentId: 0
289   - },
290   - mzlist: ['汉族',
291   - '蒙古族 ', '羌族 ', '僳僳族 ', '哈尼族',
292   - '回族', '布朗族', '佤族', '哈萨克族',
293   - '藏族', '撒拉族', '畲族', '傣族',
294   - '维吾尔族', '毛南族', '高山族', '德昂族',
295   - '苗族', '仡佬族', '拉祜族', '保安族',
296   - '彝族', '锡伯族', '水族', '裕固族',
297   - '壮族', '阿昌族', '东乡族', '京族',
298   - '布依族', '普米族', '纳西族', '独龙族',
299   - '朝鲜族', '塔吉克族', '景颇族', '鄂伦春族',
300   - '满族', '怒族', '柯尔克孜族', '赫哲族',
301   - '侗族', '乌孜别克族', '土族', '门巴族',
302   - '瑶族', '俄罗斯族', '达斡尔族', '珞巴族',
303   - '白族', '鄂温克族', '塔塔尔族', '基诺族'
304   - ],
305   - type: "1",
306   - dialogClassIVIsible: false,
307   - query: {
308   - UserTypeEnum: 1, //0:管理员,1普通用户
309   - PageIndex: 1,
310   - PageSize: 10,
311   - keyword: ''
312   - },
313   - fileList: [],
314   - selectedList: [],
315   - props: {
316   - label: 'ClassTitle',
317   - children: 'children'
318   - },
319   - };
320   - },
321   - watch: {
322   - filterText(val) {
323   - this.$refs.tree.filter(val);
324   - }
325   - },
326   -
327   - created() {
328   - this.GetUser();
329   - this.forceTestPaper();
330   - this.loadTree();
331   - },
332   - methods: {
333   - handleDelete(item,index){
334   - this.userList.splice(index,1);
335   - UsersDelete({ids:item.id});
336   - },
337   - handleWatchLive(item){
338   - console.log('handleWatchLive',item);
339   - this.$router.push(`/live?id=${item.StreamName}`)
340   - },
341   - handleAnswerDetail(item){
342   - window.open(`/#/answerDetail?id=${item.id}`,"_blank")
  430 +import {
  431 + ImportUserByExcel,
  432 + GetUserList,
  433 + AddInvitationAnswerMultiple,
  434 + UsersDelete,
  435 +} from "@/api/user";
  436 +import {
  437 + GetUserClassList,
  438 + UserClassCreate,
  439 + UserClassUpdate,
  440 + UserClassDelete,
  441 +} from "@/api/userclass";
  442 +import { GetHistoryList } from "@/api/HistoryAnswer";
  443 +
  444 +import { getTestPaperList } from "@/api/TestPaper";
  445 +export default {
  446 + data() {
  447 + return {
  448 + loading: false,
  449 + dialogFormVisible: false,
  450 + dialogTableVisible: false,
  451 + dialogTypecat: "create",
  452 + testpaperlist: [],
  453 + form: {
  454 + NumberOfAnswers: 3,
343 455 },
344   - submitForm() {
345   - this.dialogClassIVIsible = false;
  456 + userList: [],
  457 + data: [],
  458 + dialogVisiblecat: false,
  459 + filterText: "",
  460 + gridData: [],
  461 + Count: 0,
  462 + adminUserInfo: {},
  463 + temp: {
  464 + ParentId: 0,
346 465 },
347   - handleEdit(data) {
348   - this.dialogClassIVIsible = true;
349   - this.adminUserInfo = data;
  466 + mzlist: [
  467 + "汉族",
  468 + "蒙古族 ",
  469 + "羌族 ",
  470 + "僳僳族 ",
  471 + "哈尼族",
  472 + "回族",
  473 + "布朗族",
  474 + "佤族",
  475 + "哈萨克族",
  476 + "藏族",
  477 + "撒拉族",
  478 + "畲族",
  479 + "傣族",
  480 + "维吾尔族",
  481 + "毛南族",
  482 + "高山族",
  483 + "德昂族",
  484 + "苗族",
  485 + "仡佬族",
  486 + "拉祜族",
  487 + "保安族",
  488 + "彝族",
  489 + "锡伯族",
  490 + "水族",
  491 + "裕固族",
  492 + "壮族",
  493 + "阿昌族",
  494 + "东乡族",
  495 + "京族",
  496 + "布依族",
  497 + "普米族",
  498 + "纳西族",
  499 + "独龙族",
  500 + "朝鲜族",
  501 + "塔吉克族",
  502 + "景颇族",
  503 + "鄂伦春族",
  504 + "满族",
  505 + "怒族",
  506 + "柯尔克孜族",
  507 + "赫哲族",
  508 + "侗族",
  509 + "乌孜别克族",
  510 + "土族",
  511 + "门巴族",
  512 + "瑶族",
  513 + "俄罗斯族",
  514 + "达斡尔族",
  515 + "珞巴族",
  516 + "白族",
  517 + "鄂温克族",
  518 + "塔塔尔族",
  519 + "基诺族",
  520 + ],
  521 + type: "1",
  522 + dialogClassIVIsible: false,
  523 + query: {
  524 + UserTypeEnum: 1, //0:管理员,1普通用户
  525 + PageIndex: 1,
  526 + PageSize: 10,
  527 + keyword: "",
350 528 },
351   - handleTestHitory(row) {
352   - GetHistoryList({ UserId: row.id }).then(res => {
353   - this.gridData = res.data.data;
354   - this.dialogTableVisible = true;
355   - });
356   -
  529 + fileList: [],
  530 + selectedList: [],
  531 + props: {
  532 + label: "ClassTitle",
  533 + children: "children",
357 534 },
358   - handleShareSend() {
359   - var rows = this.$refs.userList.selection;
360   - var ids = rows.map(o => { return { UserId: o.id } }) || [];
361   - var postData = {
362   - TestPaperId: this.form.TestPaperId,
363   - NumberOfAnswers: this.form.NumberOfAnswers || 1,
364   - Users: ids
365   - };
366   - if (!ids || ids.length < 1) {
367   - this.$message.warning('请至少选择一个用户进行发送!');
368   - return;
369   - }
370   - if (!this.form.TestPaperId) {
371   -
372   - this.$message.warning('请选择试卷后再发送!');
373   - return;
374   - }
375   - this.$confirm('确认向选择的' + ids.length + '个用户发送试卷连接进行测试吗?', '提示消息', {
376   - confirmButtonText: '确认',
377   - cancelButtonText: '取消',
  535 + };
  536 + },
  537 + watch: {
  538 + filterText(val) {
  539 + this.$refs.tree.filter(val);
  540 + },
  541 + },
  542 +
  543 + created() {
  544 + this.GetUser();
  545 + this.forceTestPaper();
  546 + this.loadTree();
  547 + },
  548 + methods: {
  549 + handleDelete(item, index) {
  550 + this.userList.splice(index, 1);
  551 + UsersDelete({ ids: item.id });
  552 + },
  553 + handleWatchLive(item) {
  554 + console.log("handleWatchLive", item);
  555 + this.$router.push(`/live?id=${item.StreamName}`);
  556 + },
  557 + handleAnswerDetail(item) {
  558 + window.open(`/#/answerDetail?id=${item.id}`, "_blank");
  559 + },
  560 + submitForm() {
  561 + this.dialogClassIVIsible = false;
  562 + },
  563 + handleEdit(data) {
  564 + this.dialogClassIVIsible = true;
  565 + this.adminUserInfo = data;
  566 + },
  567 + handleTestHitory(row) {
  568 + GetHistoryList({ UserId: row.id }).then((res) => {
  569 + this.gridData = res.data.data;
  570 + this.dialogTableVisible = true;
  571 + });
  572 + },
  573 + handleShareSend() {
  574 + var rows = this.$refs.userList.selection;
  575 + var ids =
  576 + rows.map((o) => {
  577 + return { UserId: o.id };
  578 + }) || [];
  579 + var postData = {
  580 + TestPaperId: this.form.TestPaperId,
  581 + NumberOfAnswers: this.form.NumberOfAnswers || 1,
  582 + Users: ids,
  583 + };
  584 + if (!ids || ids.length < 1) {
  585 + this.$message.warning("请至少选择一个用户进行发送!");
  586 + return;
  587 + }
  588 + if (!this.form.TestPaperId) {
  589 + this.$message.warning("请选择试卷后再发送!");
  590 + return;
  591 + }
  592 + this.$confirm(
  593 + "确认向选择的" + ids.length + "个用户发送试卷连接进行测试吗?",
  594 + "提示消息",
  595 + {
  596 + confirmButtonText: "确认",
  597 + cancelButtonText: "取消",
378 598 callback: (action) => {
379 599 if (action == "confirm") {
380   -
381   - AddInvitationAnswerMultiple(postData).then(res => {
  600 + AddInvitationAnswerMultiple(postData).then((res) => {
382 601 if (res.data.code == 200) {
383   - this.$message.success('发送成功');
  602 + this.$message.success("发送成功");
384 603 this.form = {};
385 604 this.dialogFormVisible = false;
386 605 this.GetUser();
387   - }
388   - else {
389   - this.$message.error('发送失败');
  606 + } else {
  607 + this.$message.error("发送失败");
390 608 }
391 609 });
392 610 }
393 611 },
394   - })
395   - },
396   - forceTestPaper() {
397   - let parameter = {
398   - pageIndex: 1,
399   - pageSize: 10000,
400   - sort: "id",
401   - sortOrder: 1,
402   - keyword: ""
403 612 }
404   - getTestPaperList(parameter).then(res => {
405   - this.testpaperlist = res.data.data;
406   - });
407   - },
408   - search() {
409   - this.GetUser();
410   - },
411   - handleSuccess() {
412   - this.$message.success('导入完成!');
413   - this.GetUser();
414   - },
415   - handleInviteInterview() {
416   - this.dialogFormVisible = true;
417   - },
418   - handleSelectionChange(val) {
419   - console.log(val);
420   - this.selectedList = val;
421   - },
422   - handleExceed() { },
423   - ImportUser() { },
424   -
425   -
426   - showcontent(c, row) {
427   - this.showbody = c;
428   - this.dialogVisible_content = true;
429   - },
430   - submitcat() {
431   - // this.$loading({lock:true,text:'保存中...'});
432   - if (this.loading) {
433   - return
434   - }
435   - this.loading = true
436   - var postData = this.temp;
437   - if (this.dialogTypecat == 'update') {
438   - if (postData.AddTime == '0001-01-01T00:00:00') postData.AddTime = new Date();
439   - UserClassUpdate(postData).then(o => {
440   - this.$message({
441   - message: '提交成功',
442   - type: 'success'
443   - })
444   - this.dialogVisiblecat = false;
445   - setTimeout(()=>{
446   - this.loading = false;
447   - },1000);
448   - });
449   -
450   - }
451   - else {
452   -
453   - UserClassCreate(postData).then(o => {
454   -
455   - this.$message({
456   - message: '提交成功',
457   - type: 'success'
458   - })
459   -
460   - this.dialogVisiblecat = false
461   -
462   - this.loadTree();
463   - setTimeout(()=>{
464   - this.loading = false;
465   - },1000);
  613 + );
  614 + },
  615 + forceTestPaper() {
  616 + let parameter = {
  617 + pageIndex: 1,
  618 + pageSize: 10000,
  619 + sort: "id",
  620 + sortOrder: 1,
  621 + keyword: "",
  622 + };
  623 + getTestPaperList(parameter).then((res) => {
  624 + this.testpaperlist = res.data.data;
  625 + });
  626 + },
  627 + search() {
  628 + this.GetUser();
  629 + },
  630 + handleSuccess() {
  631 + this.$message.success("导入完成!");
  632 + this.GetUser();
  633 + },
  634 + handleInviteInterview() {
  635 + this.dialogFormVisible = true;
  636 + },
  637 + handleSelectionChange(val) {
  638 + console.log(val);
  639 + this.selectedList = val;
  640 + },
  641 + handleExceed() {},
  642 + ImportUser() {},
466 643  
467   - });
468   - }
469   - },
470   - editclose(data) {
471   - // this.dialogVisible_step = false;
472   - this.fetchData()
473   - },
474   - loadTree() {
475   - GetUserClassList({ ParentId: 0 }).then(res => {
476   - this.data = res.data.data
477   - })
478   - },
479   - filterNode(value, data) {
480   - if (!value) return true;
481   - return data.ClassTitle.indexOf(value) !== -1
482   - },
483   - addcat() {
484   - this.temp = { AddTime: new Date() }
485   - this.dialogVisiblecat = true
486   - },
487   - editcat() {
488   - this.dialogTypecat = 'update';
489   - if (!this.temp.id) {
  644 + showcontent(c, row) {
  645 + this.showbody = c;
  646 + this.dialogVisible_content = true;
  647 + },
  648 + submitcat() {
  649 + // this.$loading({lock:true,text:'保存中...'});
  650 + if (this.loading) {
  651 + return;
  652 + }
  653 + this.loading = true;
  654 + var postData = this.temp;
  655 + if (this.dialogTypecat == "update") {
  656 + if (postData.AddTime == "0001-01-01T00:00:00")
  657 + postData.AddTime = new Date();
  658 + UserClassUpdate(postData).then((o) => {
490 659 this.$message({
491   - message: '请选择一个分类进行操作!',
492   - type: 'warning'
493   - })
494   - return;
495   - }
496   - this.dialogVisiblecat = true;
497   - },
498   - delcat() {
499   - if (!this.temp.id) {
  660 + message: "提交成功",
  661 + type: "success",
  662 + });
  663 + this.dialogVisiblecat = false;
  664 + setTimeout(() => {
  665 + this.loading = false;
  666 + }, 1000);
  667 + });
  668 + } else {
  669 + UserClassCreate(postData).then((o) => {
500 670 this.$message({
501   - message: '请选择一个分类进行操作!',
502   - type: 'warning'
503   - })
504   - return;
505   - }
506   - this.$confirm('确认删除该分类吗?', '提示', {
507   - confirmButtonText: '确定',
508   - cancelButtonText: '取消',
509   - type: 'warning'
510   - }).then(() => {
511   - UserClassDelete({ ids: this.temp.id }).then(o => {
512   - this.loadTree();
513   - this.$message({
514   - message: '删除成功',
515   - type: 'success'
516   - })
  671 + message: "提交成功",
  672 + type: "success",
517 673 });
518 674  
519   - })
520   - },
521   - handleNodeClick(data, checked, indeterminate) {
522   - this.query.userClassId = data.id;
523   - this.temp = data;
524   - this.GetUser()
525   - },
  675 + this.dialogVisiblecat = false;
526 676  
527   - resetSearch() {
528   - this.query = {
529   - UserTypeEnum: 1, //0:管理员,1普通用户
530   - PageIndex: 1,
531   - PageSize: 10,
532   - keyword: ''
533   - };
534   - this.GetUser();
535   - },
536   - GetUser() {
537   - GetUserList(this.query).then((res) => {
538   - this.userList = res.data.data.rows.map((t) => {
539   - if (t.phone) {
540   - t.phone1 = t.phone.replace(t.phone.substring(3, 7), "****");
541   - }
542   - return t;
  677 + this.loadTree();
  678 + setTimeout(() => {
  679 + this.loading = false;
  680 + }, 1000);
  681 + });
  682 + }
  683 + },
  684 + editclose(data) {
  685 + // this.dialogVisible_step = false;
  686 + this.fetchData();
  687 + },
  688 + loadTree() {
  689 + GetUserClassList({ ParentId: 0 }).then((res) => {
  690 + this.data = res.data.data;
  691 + });
  692 + },
  693 + filterNode(value, data) {
  694 + if (!value) return true;
  695 + return data.ClassTitle.indexOf(value) !== -1;
  696 + },
  697 + addcat() {
  698 + this.temp = { AddTime: new Date() };
  699 + this.dialogVisiblecat = true;
  700 + },
  701 + editcat() {
  702 + this.dialogTypecat = "update";
  703 + if (!this.temp.id) {
  704 + this.$message({
  705 + message: "请选择一个分类进行操作!",
  706 + type: "warning",
  707 + });
  708 + return;
  709 + }
  710 + this.dialogVisiblecat = true;
  711 + },
  712 + delcat() {
  713 + if (!this.temp.id) {
  714 + this.$message({
  715 + message: "请选择一个分类进行操作!",
  716 + type: "warning",
  717 + });
  718 + return;
  719 + }
  720 + this.$confirm("确认删除该分类吗?", "提示", {
  721 + confirmButtonText: "确定",
  722 + cancelButtonText: "取消",
  723 + type: "warning",
  724 + }).then(() => {
  725 + UserClassDelete({ ids: this.temp.id }).then((o) => {
  726 + this.loadTree();
  727 + this.$message({
  728 + message: "删除成功",
  729 + type: "success",
543 730 });
544   - this.Count = res.data.data.total;
545 731 });
546   - },
547   - currentchange(page) {
548   - this.query.PageIndex = page;
549   - this.GetUser();
550   - },
  732 + });
  733 + },
  734 + handleNodeClick(data, checked, indeterminate) {
  735 + this.query.userClassId = data.id;
  736 + this.temp = data;
  737 + this.GetUser();
  738 + },
  739 +
  740 + resetSearch() {
  741 + this.query = {
  742 + UserTypeEnum: 1, //0:管理员,1普通用户
  743 + PageIndex: 1,
  744 + PageSize: 10,
  745 + keyword: "",
  746 + };
  747 + this.GetUser();
  748 + },
  749 + GetUser() {
  750 + GetUserList(this.query).then((res) => {
  751 + this.userList = res.data.data.rows.map((t) => {
  752 + if (t.phone) {
  753 + t.phone1 = t.phone.replace(t.phone.substring(3, 7), "****");
  754 + }
  755 + return t;
  756 + });
  757 + this.Count = res.data.data.total;
  758 + });
  759 + },
  760 + currentchange(page) {
  761 + this.query.PageIndex = page;
  762 + this.GetUser();
551 763 },
552   - };
  764 + },
  765 +};
553 766 </script>
554 767  
555 768 <style lang="scss" scoped>
556   - .seetingsDiv {
557   - display: flex;
558   - align-items: center;
559   - width: 100%;
560   - padding-top: 10px;
561   - padding-left: 10px;
562   - /* height: 60px; */
563   - background: #efefef;
564   - /* line-height: 60px; */
565   - border-radius: 5px;
566   - box-shadow: 0 0 5px #cdcdcd;
567   - justify-content: space-between;
568   - }
569   -
570   - .seetingsDiv button {
571   - height: 40px;
572   - background-color: #304156;
573   - border: 0px;
574   - margin-left: 10px;
575   - box-shadow: 0 0 5px #cdcdcd;
576   - float: none;
577   - margin-right: 10px;
578   - }
  769 +.seetingsDiv {
  770 + display: flex;
  771 + align-items: center;
  772 + width: 100%;
  773 + padding-top: 10px;
  774 + padding-left: 10px;
  775 + /* height: 60px; */
  776 + background: #efefef;
  777 + /* line-height: 60px; */
  778 + border-radius: 5px;
  779 + box-shadow: 0 0 5px #cdcdcd;
  780 + justify-content: space-between;
  781 +}
  782 +
  783 +.seetingsDiv button {
  784 + height: 40px;
  785 + background-color: #304156;
  786 + border: 0px;
  787 + margin-left: 10px;
  788 + box-shadow: 0 0 5px #cdcdcd;
  789 + float: none;
  790 + margin-right: 10px;
  791 +}
579 792 </style>
580 793 \ No newline at end of file
... ...