This commit is contained in:
2025-11-08 16:21:13 +08:00
162 changed files with 2808 additions and 2790756 deletions

1
check-large-files.ps1 Normal file
View File

@@ -0,0 +1 @@

View File

@@ -85,7 +85,8 @@
</template> </template>
<script> <script>
import addressJson from '@/static/json/xinjiang.json'; // 改为动态加载,避免主包过大
let addressJson = null;
export default { export default {
name: 'AreaCascadePicker', name: 'AreaCascadePicker',
data() { data() {
@@ -154,12 +155,23 @@ export default {
// this.areaData = resp.data.data; // this.areaData = resp.data.data;
// } // }
// 暂时使用模拟数据 // 动态加载JSON文件使用require支持动态加载
if (!addressJson) {
try {
// 优先从主包加载(如果存在)
addressJson = require('http://124.243.245.42/ks_cms/address.json');
} catch (e) {
console.warn('无法加载地址数据,使用空数据', e);
addressJson = [];
}
}
// 使用模拟数据
this.areaData = this.getMockData(); this.areaData = this.getMockData();
} catch (error) { } catch (error) {
console.error('加载地区数据失败:', error); console.error('加载地区数据失败:', error);
// 如果后端API不存在,使用模拟数据 // 如果加载失败,使用数据
this.areaData = this.getMockData(); this.areaData = addressJson || [];
} }
}, },
@@ -338,7 +350,7 @@ export default {
// 模拟数据(用于演示) // 模拟数据(用于演示)
getMockData() { getMockData() {
return addressJson return addressJson || []
} }
}, },
}; };

View File

@@ -1,6 +1,7 @@
export default { export default {
// baseUrl: 'http://39.98.44.136:8080', // 测试 // baseUrl: 'http://39.98.44.136:8080', // 测试
baseUrl: 'http://ks.zhaopinzao8dian.com/api/ks', // 测试 baseUrl: 'http://ks.zhaopinzao8dian.com/api/ks', // 测试
// baseUrl: 'http://ks.zhaopinzao8dian.com/api/ks', // 测试
LCBaseUrl:'http://10.110.145.145:9100',//招聘、培训、帮扶 LCBaseUrl:'http://10.110.145.145:9100',//招聘、培训、帮扶
LCBaseUrlInner:'http://10.110.145.145:10100',//内网端口 LCBaseUrlInner:'http://10.110.145.145:10100',//内网端口

1
delete-large-json.ps1 Normal file
View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,220 @@
# 微信小程序主包体积优化方案
## 当前主包体积分析
根据代码依赖分析图,主包体积为 **2.74MB**,主要组成部分:
### 1. 静态资源 (848KB)
- **images (507KB)**: 包含多个大图片文件
- `video-bj2.png`: 156KB
- `video-jt.png`: 126KB
- `spxx-k.png`: 54KB
- `bj.jpg`: 52KB
- `imgs/avatar.jpg`: 48KB
- **icon (187KB)**: 图标文件
### 2. JavaScript 库文件
- **uni_modules/lime-echart/static/echarts.min.js**: 568KB ⚠️
- **lib/lunar-javascript@1.7.2.js**: 301KB ⚠️
- **lib/highlight/highlight-uni.min.js**: 166KB
- **common/vendor.js**: 293KB (未找到,可能已删除)
### 3. 其他
- **uni_modules**: 751KB
- **pages**: 363KB
- **common**: 316KB
---
## 优化方案
### 方案一:删除主包中未使用的大文件(立即执行)
#### 1.1 删除主包中的 echarts.min.js
**问题**: `uni_modules/lime-echart/static/echarts.min.js` (568KB) 在主包中,但只在 `packageCa` 分包中使用。
**解决方案**:
- ✅ 确认 `packageCa` 分包中已有 `packageCa/utilCa/echarts.min.js`
- ✅ 删除主包中的 `uni_modules/lime-echart/static/echarts.min.js`(如果不需要在主包使用)
- ⚠️ 注意:如果主包页面也需要使用 echarts需要保留或按需加载
**操作步骤**:
```bash
# 检查主包中是否有页面使用 echarts
# 如果没有,可以删除或移动到分包
```
#### 1.2 删除主包中的 lunar-javascript@1.7.2.js
**问题**: `lib/lunar-javascript@1.7.2.js` (301KB) 在主包中,但只在 `packageA/pages/selectDate/selectDate.vue` 中使用。
**解决方案**:
- ✅ 确认 `packageA/lib/lunar-javascript@1.7.2.js` 已存在
- ✅ 删除主包中的 `lib/lunar-javascript@1.7.2.js`
- ✅ 更新 `packageA/pages/selectDate/selectDate.vue` 中的引用路径
**操作步骤**:
1. 确认 `packageA/lib/lunar-javascript@1.7.2.js` 存在
2. 删除 `lib/lunar-javascript@1.7.2.js`
3. 确保 `packageA/pages/selectDate/selectDate.vue` 使用分包内的文件
---
### 方案二:优化图片资源(预计减少 300-400KB
#### 2.1 压缩大图片文件
**目标图片**:
- `static/images/train/video-bj2.png` (156KB) → 目标: <80KB
- `static/images/train/video-jt.png` (126KB) 目标: <60KB
- `static/images/train/spxx-k.png` (54KB) 目标: <30KB
- `static/images/train/bj.jpg` (52KB) 目标: <30KB
- `static/imgs/avatar.jpg` (48KB) 目标: <25KB
**工具推荐**:
- [TinyPNG](https://tinypng.com/) - PNG压缩
- [Squoosh](https://squoosh.app/) - 在线图片压缩
- [ImageOptim](https://imageoptim.com/) - 批量压缩
#### 2.2 将非首屏必需图片移到分包
**策略**:
- `static/images/train/` 目录下的图片移到 `packageB` 分包培训相关
- 只在需要时加载这些图片
**操作步骤**:
1. 创建 `packageB/static/images/train/` 目录
2. 移动图片文件到分包
3. 更新相关页面的图片路径
---
### 方案三:优化 markdown 相关库(预计减少 166KB
#### 3.1 将 highlight-uni.min.js 移到分包
**问题**: `lib/highlight/highlight-uni.min.js` (166KB) `utils/markdownParser.js` 中使用主要用于 chat 页面
**解决方案**:
- 方案A: markdown 相关库移到独立分包按需加载
- 方案B: 使用更轻量的代码高亮库
- 方案C: 如果只在 chat 页面使用可以移到 chat 页面所在的分包
**推荐方案**: 方案C - markdown 相关库移到 chat 页面附近
**操作步骤**:
1. 创建 `pages/chat/lib/` 目录
2. 移动 `lib/highlight/` `lib/markdown-it.min.js` 到该目录
3. 更新 `utils/markdownParser.js` 中的引用路径
---
### 方案四:清理未使用的 uni_modules预计减少 100-200KB
#### 4.1 检查 uni_modules 使用情况
**需要检查的模块**:
- `custom-waterfalls-flow` - 检查是否在主包使用
- `uni-data-select` - 检查是否在主包使用
- `uni-dateformat` - 检查是否在主包使用
- `uni-load-more` - 检查是否在主包使用
- `uni-popup` - 检查是否在主包使用
- `uni-steps` - 检查是否在主包使用
- `uni-swipe-action` - 检查是否在主包使用
- `uni-transition` - 检查是否在主包使用
**操作步骤**:
1. 搜索每个模块在主包中的使用情况
2. 如果只在分包中使用可以考虑移除主包的引用
3. 使用 `easycom` 配置确保组件能正确加载
---
### 方案五:代码分割和按需加载
#### 5.1 使用分包预加载
`pages.json` 中配置分包预加载优化用户体验
```json
{
"preloadRule": {
"pages/index/index": {
"network": "all",
"packages": ["packageA"]
}
}
}
```
#### 5.2 动态导入大型库
对于只在特定场景使用的大型库使用动态导入
```javascript
// 示例:按需加载 echarts
const loadEcharts = async () => {
if (typeof require !== 'undefined') {
return require('../../utilCa/echarts.min.js');
} else {
return await import('../../utilCa/echarts.min.js');
}
};
```
---
## 优化效果预估
| 优化项 | 预计减少体积 | 优先级 |
|--------|------------|--------|
| 删除主包 echarts.min.js | 568KB | 🔴 |
| 删除主包 lunar-javascript | 301KB | 🔴 |
| 压缩图片资源 | 300-400KB | 🟡 |
| 优化 markdown | 166KB | 🟡 |
| 清理未使用模块 | 100-200KB | 🟢 |
**总计预计减少**: 1.4MB - 1.6MB
**优化后主包体积**: 1.1MB - 1.3MB
---
## 实施步骤
### 第一阶段:立即执行(预计减少 869KB
1. 删除主包中未使用的 `echarts.min.js`
2. 删除主包中未使用的 `lunar-javascript@1.7.2.js`
3. 验证分包中的文件引用正确
### 第二阶段:图片优化(预计减少 300-400KB
1. 压缩大图片文件
2. 将非首屏图片移到分包
3. 更新图片路径引用
### 第三阶段:代码优化(预计减少 166-366KB
1. 优化 markdown 相关库的位置
2. 清理未使用的 uni_modules
3. 配置分包预加载
---
## 注意事项
1. **备份**: 在执行删除操作前请先备份项目
2. **测试**: 每个优化步骤后都要进行完整测试
3. **引用路径**: 确保所有文件引用路径正确更新
4. **分包限制**: 注意微信小程序分包大小限制单个分包不超过 2MB
5. **主包限制**: 主包大小建议控制在 1.5MB 以内
---
## 验证方法
1. 使用微信开发者工具上传代码查看主包体积
2. 使用代码依赖分析工具验证优化效果
3. 测试各个功能模块确保正常工作
4. 检查分包加载是否正常
---
## 后续维护建议
1. **定期检查**: 每月检查主包体积防止体积反弹
2. **图片规范**: 建立图片压缩和优化规范
3. **依赖管理**: 新增依赖时评估对主包体积的影响
4. **代码审查**: 在代码审查时关注主包体积变化

1
move-large-json.ps1 Normal file
View File

@@ -0,0 +1 @@

View File

@@ -1,173 +1,174 @@
import { import {
ref, ref,
reactive, reactive,
watch, watch,
isRef, isRef,
nextTick nextTick
} from 'vue' } from 'vue'
export function usePagination( export function usePagination(
requestFn, requestFn,
transformFn, transformFn,
options = {} options = {}
) { ) {
const list = ref([]) const list = ref([])
const loading = ref(false) const loading = ref(false)
const error = ref(false) const error = ref(false)
const finished = ref(false) const finished = ref(false)
const firstLoading = ref(true) const firstLoading = ref(true)
const empty = ref(false) const empty = ref(false)
const { const {
pageSize = 10, pageSize = 10,
search = {}, search = {},
autoWatchSearch = false, autoWatchSearch = false,
debounceTime = 300, debounceTime = 300,
autoFetch = false, autoFetch = false,
// 字段映射 // 字段映射
dataKey = 'rows', dataKey = 'rows',
totalKey = 'total', totalKey = 'total',
// 分页字段名映射 // 分页字段名映射
pageField = 'current', pageField = 'current',
sizeField = 'pageSize', sizeField = 'pageSize',
onBeforeRequest, onBeforeRequest,
onAfterRequest onAfterRequest
} = options } = options
const pageState = reactive({ const pageState = reactive({
page: 1, page: 1,
pageSize: isRef(pageSize) ? pageSize.value : pageSize, pageSize: isRef(pageSize) ? pageSize.value : pageSize,
total: 0, total: 0,
maxPage: 1, maxPage: 1,
search: isRef(search) ? search.value : search search: isRef(search) ? search.value : search
}) })
let debounceTimer = null let debounceTimer = null
const fetchData = async (type = 'refresh') => { const fetchData = async (type = 'refresh') => {
if (loading.value) return Promise.resolve() if (loading.value) return Promise.resolve()
console.log(type) console.log(type)
loading.value = true loading.value = true
error.value = false error.value = false
if (typeof onBeforeRequest === 'function') { if (typeof onBeforeRequest === 'function') {
try { try {
onBeforeRequest(type, pageState) onBeforeRequest(type, pageState)
} catch (err) { } catch (err) {
console.warn('onBeforeRequest 执行异常:', err) console.warn('onBeforeRequest 执行异常:', err)
} }
} }
if (type === 'refresh') { if (type === 'refresh') {
pageState.page = 1 pageState.page = 1
finished.value = false finished.value = false
if (list.value.length === 0) { if (list.value.length === 0) {
firstLoading.value = true firstLoading.value = true
} }
} else if (type === 'loadMore') { } else if (type === 'loadMore') {
if (pageState.page >= pageState.maxPage) { if (pageState.page >= pageState.maxPage) {
loading.value = false loading.value = false
finished.value = true finished.value = true
return Promise.resolve('no more') return Promise.resolve('no more')
} }
pageState.page += 1 pageState.page += 1
} }
const params = { const params = {
...pageState.search, ...pageState.search,
[pageField]: pageState.page, [pageField]: pageState.page,
[sizeField]: pageState.pageSize, [sizeField]: pageState.pageSize,
} }
try { try {
const res = await requestFn(params) const res = await requestFn(params)
const rawData = res[dataKey] const rawData = res[dataKey]
const total = res[totalKey] || 99999999 const total = res[totalKey] || 99999999
console.log(total, rawData) console.log(total, rawData)
const data = typeof transformFn === 'function' ? transformFn(rawData) : rawData const data = typeof transformFn === 'function' ? transformFn(rawData) : rawData
if (type === 'refresh') { if (type === 'refresh') {
list.value = data list.value = data
} else { } else {
list.value.push(...data) list.value.push(...data)
} }
pageState.total = total pageState.total = total
pageState.maxPage = Math.ceil(total / pageState.pageSize) pageState.maxPage = Math.ceil(total / pageState.pageSize)
finished.value = list.value.length >= total finished.value = list.value.length >= total
empty.value = list.value.length === 0 empty.value = list.value.length === 0
} catch (err) { } catch (err) {
console.error('分页请求失败:', err) console.error('分页请求失败:', err)
error.value = true error.value = true
} finally { } finally {
loading.value = false loading.value = false
firstLoading.value = false firstLoading.value = false
if (typeof onAfterRequest === 'function') { if (typeof onAfterRequest === 'function') {
try { try {
onAfterRequest(type, pageState, { onAfterRequest(type, pageState, {
error: error.value error: error.value
}) })
} catch (err) { } catch (err) {
console.warn('onAfterRequest 执行异常:', err) console.warn('onAfterRequest 执行异常:', err)
} }
} }
} }
} }
const refresh = () => fetchData('refresh') const refresh = () => fetchData('refresh')
const loadMore = () => fetchData('loadMore') const loadMore = () => fetchData('loadMore')
const resetPagination = () => { const resetPagination = () => {
list.value = [] list.value = []
pageState.page = 1 pageState.page = 1
pageState.total = 0 pageState.total = 0
pageState.maxPage = 1 pageState.maxPage = 1
finished.value = false finished.value = false
error.value = false error.value = false
firstLoading.value = true firstLoading.value = true
empty.value = false empty.value = false
} }
if (autoWatchSearch && isRef(search)) { if (autoWatchSearch && isRef(search)) {
watch(search, (newVal) => { watch(search, (newVal) => {
pageState.search = newVal pageState.search = newVal
clearTimeout(debounceTimer) clearTimeout(debounceTimer)
debounceTimer = setTimeout(() => { debounceTimer = setTimeout(() => {
refresh() refresh()
}, debounceTime) }, debounceTime)
}, { }, {
deep: true deep: true
}) })
} }
watch(pageSize, (newVal) => { watch(pageSize, (newVal) => {
pageState.pageSize = newVal pageState.pageSize = newVal
}, { }, {
deep: true deep: true
}) })
if (autoFetch) { if (autoFetch) {
nextTick(() => { nextTick(() => {
refresh() refresh()
}) })
} }
return { return {
list, list,
loading, loading,
error, error,
finished, finished,
firstLoading, firstLoading,
empty, empty,
pageState, pageState,
refresh, refresh,
loadMore, loadMore,
resetPagination resetPagination
} }
} }

File diff suppressed because one or more lines are too long

View File

@@ -13,7 +13,7 @@ import useUserStore from '@/stores/useUserStore';
const { $api, navTo, navBack, vacanciesTo } = inject('globalFunction'); const { $api, navTo, navBack, vacanciesTo } = inject('globalFunction');
import { storeToRefs } from 'pinia'; import { storeToRefs } from 'pinia';
import useLocationStore from '@/stores/useLocationStore'; import useLocationStore from '@/stores/useLocationStore';
import { usePagination } from '@/hook/usePagination'; import { usePagination } from '@/packageA/hook/usePagination';
import { jobMoreMap } from '@/utils/markdownParser'; import { jobMoreMap } from '@/utils/markdownParser';
const { longitudeVal, latitudeVal } = storeToRefs(useLocationStore()); const { longitudeVal, latitudeVal } = storeToRefs(useLocationStore());
const loadmoreRef = ref(null); const loadmoreRef = ref(null);

View File

@@ -50,7 +50,7 @@ const { $api, navTo, navBack } = inject('globalFunction');
const weekMap = ['日', '一', '二', '三', '四', '五', '六']; const weekMap = ['日', '一', '二', '三', '四', '五', '六'];
const calendarData = ref([]); const calendarData = ref([]);
const current = ref({}); const current = ref({});
import { Solar, Lunar } from '@/lib/lunar-javascript@1.7.2.js'; import { Solar, Lunar } from '@/packageA/lib/lunar-javascript@1.7.2.js';
const isRecord = ref(false); const isRecord = ref(false);
const recordNum = ref(4); const recordNum = ref(4);

View File

@@ -57,7 +57,7 @@
<div class="conten">截止时间{{item.dueDate}}</div> <div class="conten">截止时间{{item.dueDate}}</div>
</div> </div>
<div class="flooter"> <div class="flooter">
<div v-if="item.gradeUser" @click="jumps('/packageB/train/mockExam/viewGrades')">查看成绩</div> <div v-if="item.gradeUser" @click="jumps(item)">查看成绩</div>
<div @click="handleDetail(item)">详情</div> <div @click="handleDetail(item)">详情</div>
<div @click="collects(item,1)" v-if="item.isCollect==0"> <div @click="collects(item,1)" v-if="item.isCollect==0">
<image :src="urls+'wsc.png'" mode="" style="width: 32rpx;height: 30rpx;"></image> <image :src="urls+'wsc.png'" mode="" style="width: 32rpx;height: 30rpx;"></image>
@@ -263,14 +263,14 @@ function handleDetail(row){
} }
}); });
} }
function jumps(url){ function jumps(row){
navTo(url); navTo('/packageB/train/mockExam/viewGrades?examPaperId='+row.examPaperId);
} }
function clones(){ function clones(){
dialogVisible.value=false dialogVisible.value=false
} }
function handleOperation(row,i) { function handleOperation(row,i) {
navTo(`/packageB/train/video/videoDetail?id=${video.videoId}`); navTo(`/packageB/train/mockExam/startExam?examPaperId=${row.examPaperId}&timeLimit=${row.timeLimit}&name=${row.name}&types=${i}`);
} }
</script> </script>

View File

@@ -0,0 +1,482 @@
<template>
<div class="app-box">
<image src="../../../static/images/train/bj.jpg" class="bjImg" mode=""></image>
<div class="con-box">
<div class="header">
<div style="font-weight: 600;font-size: 32rpx;">{{rows.name}}</div>
</div>
<div class="problemCard">
<div v-for="(item,index) in problemData" :key="index">
<template v-if="questionIndex==(index+1)">
<div class="problemTitle">
<span class="titleType" v-if="item.type=='single'">单选题</span>
<span class="titleType" v-if="item.type=='multiple'">多选题</span>
<span class="titleType" v-if="item.type=='judge'">判断题</span>
<span>{{item.content}}</span>
</div>
<div class="options" v-if="item.type=='single'">
<div class="opt" :class="item.choice!==''&&i==item.choice?'active':''" v-for="(val,i) in parseOptions(item.trainChooses)">
<div class="optLab">{{indexToLetter(i)}}</div>
<span>{{val}}</span>
</div>
</div>
<div class="options" v-if="item.type=='multiple'">
<div class="opt" :class="judgment(i,index)?'active':''" v-for="(val,i) in parseOptions(item.trainChooses)">
<div class="optLab">{{indexToLetter(i)}}</div>
<span>{{val}}</span>
</div>
</div>
<div class="options" v-if="item.type=='judge'">
<div class="opt" :class="item.choice=='正确'?'active':''">
<span>正确</span>
</div>
<div class="opt" :class="item.choice=='错误'?'active':''">
<span>错误</span>
</div>
</div>
<div class="analysis">
<div class="analysisHead correct" v-if="item.choosed==item.answer">
<div>回答正确</div>
<div></div>
</div>
<div class="analysisHead errors" v-else>
<div>回答错误</div>
<div></div>
</div>
<div class="analysisCon">
<div class="parse1">正确答案</div>
<div class="parse2" v-if="item.type=='single'" style="color: #30A0FF;font-weight: bold;">{{String.fromCharCode(65 + Number(item.answer))}}.</div>
<div class="parse2" v-if="item.type=='multiple'" style="color: #30A0FF;font-weight: bold;">
<span v-for="(val,i) in parseOptions(item.answer)">{{indexToLetter(Number(val))}}.</span>
</div>
<div class="parse2" v-if="item.type=='judge'" style="color: #30A0FF;font-weight: bold;">{{item.answer}}</div>
</div>
<div class="analysisCon">
<div class="parse1">答案解析</div>
<div class="parse2">{{item.answerDesc}}</div>
</div>
<div class="analysisCon">
<div class="parse1">知识点</div>
<div>
<el-tag style="margin-right: 10px;">{{item.knowledgePoint}}</el-tag>
</div>
</div>
</div>
</template>
</div>
</div>
<div class="footer">
<div class="footerLeft">
<div class="zuo" :class="questionIndex==1?'events':''" @click="questionIndex-=1"></div>
<div class="you" :class="questionIndex==problemData.length?'events':''" @click="questionIndex+=1"></div>
</div>
<div class="footerLeft">
<div @click="dialogVisible=true">
<div><span style="color: #1CADF5;">{{questionIndex}}</span>/{{problemData.length}}</div>
<div>题号</div>
</div>
</div>
</div>
</div>
<div class="cards" v-if="dialogVisible">
<div class="cardCon">
<div class="cardHead">
<div>题号</div>
<div style="font-size: 40rpx;" @click="clones()">×</div>
</div>
<div class="questionNums">
<div class="questions" :class="item.whether=='正确'?'questionCorrect':item.whether=='错误'?'questionError':questionIndex==(index+1)?'questionsActive':''" @click="switchs(index)" v-for="(item,index) in problemList" :key="index">{{index+1}}</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { reactive, inject, watch, ref, onMounted,onBeforeUnmount,computed } from 'vue';
import { onLoad, onShow } from '@dcloudio/uni-app';
const { $api,urls , navTo,navBack , vacanciesTo, formatTotal, config } = inject('globalFunction');
import useUserStore from '@/stores/useUserStore';
import useDictStore from '@/stores/useDictStore';
const userInfo = ref({});
const rows = ref({});
const Authorization = ref('');
const radio = ref('');
const radio2 = ref('');
const checkList = ref([]);
const questionIndex = ref(1);
const correctIndex = ref(0);
const errorsIndex = ref(0);
const elapsedTime = ref(0);
const judgWhether = ref('');
const isRunning = ref(false);
const dialogVisible = ref(false);
const problemData = ref([]);
const problemList = ref([]);
watch(questionIndex, (newVal, oldVal) => {
radio.value=""
radio2.value=""
checkList.value=[]
judgWhether.value=""
});
onLoad((options) => {
rows.value=options
Authorization.value=uni.getStorageSync('Padmin-Token')||''
getHeart();
});
onShow(()=>{
})
function getHeart() {
const raw =Authorization.value;
const token = typeof raw === "string" ? raw.trim() : "";
const headers = token ? { 'Authorization': raw.startsWith("Bearer ") ? raw : `Bearer ${token}` }: {}
$api.myRequest("/dashboard/auth/heart", {}, "POST", 10100, headers).then((resData) => {
if (resData.code == 200) {
getUserInfo();
} else {
navTo('/packageB/login')
}
});
};
function getUserInfo(){
let header={
'Authorization':Authorization.value
}
$api.myRequest('/system/user/login/user/info', {},'get',10100,header).then((resData) => {
userInfo.value = resData.info || {};
// userId.value=resData.info.userId
queryData()
});
};
function queryData(){
problemData.value=[]
let header={
'Authorization':Authorization.value,
'Content-Type':"application/x-www-form-urlencoded"
}
$api.myRequest('/train/public/trainExamDash/getExamByIdModel', {
userId: userInfo.value.userId,
examPaperId:rows.value.examPaperId,
examId:rows.value.examId,
},'post',9100,header).then((resData) => {
if(resData&&resData.code==200){
elapsedTime.value=(rows.value.timeLimit*60)
resData.data.forEach((item,i)=>{
if(item.type=='multiple'){
if(item.choosed){
item.choice=item.choosed.split(",");
item.submitAnswers=true
}else{
item.choice=[]
item.submitAnswers=false
}
}else{
if(item.choosed){
item.choice=item.choosed;
item.submitAnswers=true
}else{
item.choice=""
item.submitAnswers=false
}
}
problemData.value.push(item)
problemList.value.push({index:i+1,whether:""})
})
}
});
}
function judgment(i,indexs){
let arr=problemData.value[indexs].choice.join(",")
if(arr.indexOf(i) !== -1){
return true
}else{
return false
}
};
// 解析选项
function parseOptions(options) {
if (!options) return [];
// 假设options是字符串格式以分号分隔
if (typeof options === 'string') {
return options.split(',').filter(opt => opt.trim());
}
// 如果是数组,直接返回
if (Array.isArray(options)) {
return options;
}
return [];
};
function indexToLetter(index) {
// 将索引转换为对应的字母
return String.fromCharCode(65 + index);
};
function clones(){
dialogVisible.value=false
};
function switchs(i){
questionIndex.value=(i+1)
dialogVisible.value=false
};
</script>
<style lang="stylus" scoped>
.app-box{
width: 100%;
height: 100vh;
position: relative;
.bjImg{
position: absolute;
width: 100%;
height: 100%;
}
.con-box{
position: absolute;
width: 100%;
height: 100%;
left: 0;
top:0;
z-index: 10;
padding: 20rpx 28rpx;
box-sizing: border-box;
.header{
height: 100rpx;
padding: 0 10rpx;
background: linear-gradient(0deg, #4285EC 0%, #0BBAFB 100%);
color: #fff;
font-size: 26rpx;
border-radius: 10rpx
display: flex;
align-items: center;
}
.problemCard{
margin-top: 30rpx;
.problemTitle{
font-size: 30rpx;
.titleType{
display: inline-block;
background-color: #499FFF;
border-radius: 10rpx 10rpx 10rpx 0;
padding: 8rpx 12rpx;
color: #fff;
font-size: 26rpx;
margin-right: 20rpx;
}
}
.options{
margin-top: 30rpx;
.opt{
height: 60rpx;
/* background-color: #F8F9FA; */
border-radius: 5px;
margin-bottom: 15px;
display: flex;
align-items: center;
padding-left: 30rpx;
box-sizing: border-box;
color: #808080;
font-size: 30rpx;
.optLab{
width: 40rpx;
height: 40rpx;
text-align: center;
line-height: 40rpx;
border-radius: 50%;
background-color: #8C8C8C;
color: #fff;
font-weight: 600;
font-size: 32rpx;
margin-right: 20rpx;
}
}
.active{
background: linear-gradient(90deg, #25A9F5 0%, #B1DBFF 100%);
color: #fff!important;
font-weight: bold;
}
.active>view{
background-color: #fff!important;
color: #25A9F5!important;
}
}
.analysis{
margin-top: 30rpx;
background-color: #fff;
border-radius: 6px;
margin-bottom: 15rpx;
border: 1px solid #10A8FF;
padding: 20rpx;
box-sizing: border-box;
.analysisHead{
display: flex;
align-items: center;
justify-content: space-between;
font-size: 32rpx;
font-family: Microsoft YaHei;
font-weight: bold;
letter-spacing: 2px;
}
.correct{
color: #67C23A;
}
.errors{
color: #F06A6A;
}
.analysisCon{
margin-top: 30rpx;
.parse1{
font-size: 30rpx;
font-family: Microsoft YaHei;
font-weight: bold;
}
.parse2{
font-size: 26rpx;
color: #333;
margin-top: 10px;
}
}
}
.problemBtns{
display: flex
align-items: center
justify-content: center
view{
width: 140rpx
height: 50rpx
text-align: center
line-height: 50rpx
background-color: #10A8FF
color: #fff
font-size: 28rpx
border-radius: 5rpx
margin-right: 10rpx;
}
}
}
.footer{
width: 100%;
height: 120rpx;
border-top: 1px solid #ddd
position: fixed
bottom: 0
left: 0
display: flex
align-items: center
justify-content: space-between
.footerLeft{
display: flex
align-items: center
font-size: 30rpx;
text-align: center
.zuo{
width: 26rpx;
height: 26rpx;
border-top: 2px solid #666
border-left: 2px solid #666
transform: rotate(-45deg); /* 鼠标悬停时旋转360度 */
margin-left: 60rpx;
}
.you{
width: 26rpx;
height: 26rpx;
border-right: 2px solid #666
border-bottom: 2px solid #666
transform: rotate(-45deg); /* 鼠标悬停时旋转360度 */
// margin-left: 30rpx;
margin-right: 50rpx;
}
.icons{
width: 30rpx;
height: 30rpx;
color: #fff;
text-align: center;
line-height: 30rpx;
border-radius: 50%
}
.texts{
font-size: 24rpx;
}
}
.footerLeft>view{
margin-right: 40rpx;
}
.footerBtn{
width: 140rpx
height: 50rpx
text-align: center
line-height: 50rpx
background-color: #67C23A
color: #fff
font-size: 28rpx
border-radius: 5rpx
}
}
}
.cards{
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100vh;
background-color: rgba(0,0,0,0.5);
z-index: 1000;
padding: 100rpx 50rpx;
box-sizing: border-box;
.cardCon{
height: 100%;
background-color: #fff;
padding: 20rpx;
box-sizing: border-box;
.cardHead{
display: flex;
align-items: center;
justify-content: space-between;
font-size: 30rpx;
font-weight: 600;
}
.questionNums{
width: 100%;
display: flex;
flex-wrap: wrap;
}
.questions{
width: 60rpx;
height: 60rpx;
text-align: center;
line-height: 60rpx;
border-radius: 8rpx;
border: 2px solid #E0E0E0;
font-size: 28rpx;
margin-right: 15px;
cursor: pointer;
}
.questionsActive{
background-color: #F0F9FF;
border: 2px solid #409EFF;
}
.questionCorrect{
background-color: #F0F9FF;
border: 2px solid #64BC38;
color: #6BC441;
}
.questionError{
background-color: #FFF1F0;
border: 2px solid #F56C6C;
color: #F36B6B;
}
}
}
}
.events{
pointer-events: none; /* 这会禁用所有指针事件 */
opacity: 0.5; /* 可选:改变透明度以视觉上表示不可点击 */
cursor: not-allowed; /* 可选:改变鼠标光标样式 */
}
</style>

View File

@@ -3,10 +3,12 @@
<image src="../../../static/images/train/bj.jpg" class="bjImg" mode=""></image> <image src="../../../static/images/train/bj.jpg" class="bjImg" mode=""></image>
<div class="con-box"> <div class="con-box">
<div class="header"> <div class="header">
<div>正确率{{accuracyRate}}%</div> <div style="font-weight: 600;font-size: 32rpx;">{{rows.name}}</div>
<div>用时{{formattedTime}}</div> <div class="headerCon">
<div class="headBtn" v-if="isRunning" @click="pause">暂停</div> <div>考试时长{{rows.timeLimit}}分钟</div>
<div class="headBtn" v-if="!isRunning" @click="start">继续</div> <div>{{formattedTime}}</div>
<div class="headBtn" @click="exit()">退出</div>
</div>
</div> </div>
<div class="problemCard"> <div class="problemCard">
<div v-for="(item,index) in problemData" :key="index"> <div v-for="(item,index) in problemData" :key="index">
@@ -18,57 +20,29 @@
<span>{{item.content}}</span> <span>{{item.content}}</span>
</div> </div>
<div class="options" v-if="item.type=='single'"> <div class="options" v-if="item.type=='single'">
<div class="opt" @click="selected(i)" :class="radio!==''&&i==radio?'active':''" v-for="(val,i) in parseOptions(item.trainChooses)"> <div class="opt" @click="selected(i,index)" :class="item.choice!==''&&i==item.choice?'active':''" v-for="(val,i) in parseOptions(item.trainChooses)">
<div class="optLab">{{indexToLetter(i)}}</div> <div class="optLab">{{indexToLetter(i)}}</div>
<span>{{val}}</span> <span>{{val}}</span>
</div> </div>
</div> </div>
<div class="options" v-if="item.type=='multiple'"> <div class="options" v-if="item.type=='multiple'">
<div class="opt" @click="selected2(i)" :class="judgment(i)?'active':''" v-for="(val,i) in parseOptions(item.trainChooses)"> <div class="opt" @click="selected2(i,index)" :class="judgment(i,index)?'active':''" v-for="(val,i) in parseOptions(item.trainChooses)">
<div class="optLab">{{indexToLetter(i)}}</div> <div class="optLab">{{indexToLetter(i)}}</div>
<span>{{val}}</span> <span>{{val}}</span>
</div> </div>
</div> </div>
<div class="options" v-if="item.type=='judge'"> <div class="options" v-if="item.type=='judge'">
<div class="opt" @click="selected3('正确')" :class="radio2=='正确'?'active':''"> <div class="opt" @click="selected3('正确',index)" :class="item.choice=='正确'?'active':''">
<span>正确</span> <span>正确</span>
</div> </div>
<div class="opt" @click="selected3('错误')" :class="radio2=='错误'?'active':''"> <div class="opt" @click="selected3('错误',index)" :class="item.choice=='错误'?'active':''">
<span>错误</span> <span>错误</span>
</div> </div>
</div> </div>
<div class="analysis" v-if="analysis">
<div class="analysisHead correct" v-if="judgWhether=='正确'">
<div>回答正确</div>
<div></div>
</div>
<div class="analysisHead errors" v-if="judgWhether=='错误'">
<div>回答错误</div>
<div></div>
</div>
<div class="analysisCon">
<div class="parse1">正确答案</div>
<div class="parse2" v-if="item.type=='single'" style="color: #30A0FF;font-weight: bold;">{{String.fromCharCode(65 + Number(item.answer))}}.</div>
<div class="parse2" v-if="item.type=='multiple'" style="color: #30A0FF;font-weight: bold;">
<span v-for="(val,i) in parseOptions(item.answer)">{{indexToLetter(val-1)}}.</span>
</div>
<div class="parse2" v-if="item.type=='judge'" style="color: #30A0FF;font-weight: bold;">{{item.answer}}</div>
</div>
<div class="analysisCon">
<div class="parse1">答案解析</div>
<div class="parse2">{{item.answerDesc}}</div>
</div>
<div class="analysisCon">
<div class="parse1">知识点</div>
<div>
<el-tag style="margin-right: 10px;">{{item.knowledgePoint}}</el-tag>
</div>
</div>
</div>
<div class="problemBtns"> <div class="problemBtns">
<div v-if="analysis&&judgWhether!=''&&questionIndex!=problemData.length" @click="questionIndex+=1">下一题</div> <div :class="(problemData[questionIndex-1].type=='multiple'?problemData[questionIndex-1].choice.length==0:problemData[questionIndex-1].choice==='')?'events':''" @click="submit()">提交答案</div>
<div v-else :class="((radio===''&&radio2===''&&checkList.length==0&&isRunning)||analysis)?'events':''" @click="submit()">提交答案</div>
</div> </div>
</template> </template>
</div> </div>
@@ -77,25 +51,10 @@
<div class="footerLeft"> <div class="footerLeft">
<div class="zuo" :class="questionIndex==1?'events':''" @click="questionIndex-=1"></div> <div class="zuo" :class="questionIndex==1?'events':''" @click="questionIndex-=1"></div>
<div class="you" :class="questionIndex==problemData.length?'events':''" @click="questionIndex+=1"></div> <div class="you" :class="questionIndex==problemData.length?'events':''" @click="questionIndex+=1"></div>
<div @click="collect(1)" style="text-align: center;font-size: 24rpx;" v-if="(problemData[questionIndex - 1]?.isCollect || 0)!=1">
<image :src="urls+'wsc.png'" mode="" style="width: 34rpx;height: 32rpx;"></image>
<div>收藏</div>
</div>
<div @click="collect(0)" style="text-align: center;font-size: 24rpx;" v-if="(problemData[questionIndex - 1]?.isCollect || 0)==1">
<image :src="urls+'video-sc.png'" mode="" style="width: 34rpx;height: 32rpx;"></image>
<div>取消</div>
</div>
</div> </div>
<div class="footerBtn" @click="exit()">完成练习</div> <div class="footerBtn" @click="complete()">完成练习</div>
<div class="footerLeft"> <div class="footerLeft">
<div>
<div class="icons" style="background-color: #1CADF5;"></div>
<div class="texts" style="color: #1CADF5;">{{correctIndex}}</div>
</div>
<div>
<div class="icons" style="background-color: #FF6668;">×</div>
<div class="texts" style="color: #FF6668;">{{errorsIndex}}</div>
</div>
<div @click="dialogVisible=true"> <div @click="dialogVisible=true">
<div><span style="color: #1CADF5;">{{questionIndex}}</span>/{{problemData.length}}</div> <div><span style="color: #1CADF5;">{{questionIndex}}</span>/{{problemData.length}}</div>
<div>题号</div> <div>题号</div>
@@ -124,6 +83,7 @@ const { $api,urls , navTo,navBack , vacanciesTo, formatTotal, config } = inject(
import useUserStore from '@/stores/useUserStore'; import useUserStore from '@/stores/useUserStore';
import useDictStore from '@/stores/useDictStore'; import useDictStore from '@/stores/useDictStore';
const userInfo = ref({}); const userInfo = ref({});
const rows = ref({});
const Authorization = ref(''); const Authorization = ref('');
const radio = ref(''); const radio = ref('');
const radio2 = ref(''); const radio2 = ref('');
@@ -131,9 +91,7 @@ const checkList = ref([]);
const questionIndex = ref(1); const questionIndex = ref(1);
const correctIndex = ref(0); const correctIndex = ref(0);
const errorsIndex = ref(0); const errorsIndex = ref(0);
const accuracyRate = ref(0);
const elapsedTime = ref(0); const elapsedTime = ref(0);
const analysis = ref(false);
const judgWhether = ref(''); const judgWhether = ref('');
const isRunning = ref(false); const isRunning = ref(false);
const dialogVisible = ref(false); const dialogVisible = ref(false);
@@ -149,7 +107,6 @@ watch(questionIndex, (newVal, oldVal) => {
radio.value="" radio.value=""
radio2.value="" radio2.value=""
checkList.value=[] checkList.value=[]
analysis.value=false
judgWhether.value="" judgWhether.value=""
}); });
@@ -161,6 +118,7 @@ watch(questionIndex, (newVal, oldVal) => {
// }); // });
onLoad((options) => { onLoad((options) => {
rows.value=options
Authorization.value=uni.getStorageSync('Padmin-Token')||'' Authorization.value=uni.getStorageSync('Padmin-Token')||''
getHeart(); getHeart();
}); });
@@ -201,16 +159,57 @@ function queryData(){
'Authorization':Authorization.value, 'Authorization':Authorization.value,
'Content-Type':"application/x-www-form-urlencoded" 'Content-Type':"application/x-www-form-urlencoded"
} }
$api.myRequest('/train/public/trainPractice/getQuestions', { if(rows.value.types==1){
userId: userInfo.value.userId $api.myRequest('/train/public/trainExamDash/getExamTopicNoAnswer', {
},'post',9100,header).then((resData) => { userId: userInfo.value.userId,
resData.forEach((item,i)=>{ examPaperId:rows.value.examPaperId
problemData.value.push(item) },'post',9100,header).then((resData) => {
problemList.value.push({index:i+1,whether:""}) if(resData&&resData.code==200){
}) elapsedTime.value=(rows.value.timeLimit*60)
start() resData.data.forEach((item,i)=>{
accuracyRates() if(item.type=='multiple'){
}); item.choice=[]
}else{
item.choice=""
}
problemData.value.push(item)
problemList.value.push({index:i+1,whether:""})
})
start()
}
});
}else if(rows.value.types==2){
$api.myRequest('/train/public/trainExamDash/continueExam', {
userId: userInfo.value.userId,
examPaperId:rows.value.examPaperId
},'post',9100,header).then((resData) => {
if(resData&&resData.code==200){
elapsedTime.value=(rows.value.timeLimit*60)
resData.data.forEach((item,i)=>{
if(item.type=='multiple'){
if(item.choosed){
item.choice=item.choosed.split(",");
item.submitAnswers=true
}else{
item.choice=[]
item.submitAnswers=false
}
}else{
if(item.choosed){
item.choice=item.choosed;
item.submitAnswers=true
}else{
item.choice=""
item.submitAnswers=false
}
}
problemData.value.push(item)
problemList.value.push({index:i+1,whether:""})
})
start()
}
});
}
} }
function collect(is){ function collect(is){
let header={ let header={
@@ -225,76 +224,102 @@ function collect(is){
problemData.value[questionIndex.value-1].isCollect=is problemData.value[questionIndex.value-1].isCollect=is
}); });
}; };
//正确率
function accuracyRates(){
let header={
'Authorization':Authorization.value,
'Content-Type':"application/x-www-form-urlencoded"
}
$api.myRequest('/train/public/trainPractice/getCount', {
userId: userInfo.value.userId,
},'post',9100,header).then((resData) => {
accuracyRate.value=resData.truePresent
});
};
//提交答案 //提交答案
function submit(){ function submit(){
let indexs=questionIndex.value-1 let indexs=questionIndex.value-1
let parm={ let parm={
examPaperId:rows.value.examPaperId,
questionId:problemData.value[indexs].questionId, questionId:problemData.value[indexs].questionId,
userId:userInfo.value.userId, userId:userInfo.value.userId,
answer:problemData.value[indexs].answer answer:problemData.value[indexs].type=='multiple'?problemData.value[indexs].choice.join(","):problemData.value[indexs].choice,
} examId:problemData.value[indexs].examId
if(problemData.value[indexs].type=='single'){
parm.submitAnswer=radio.value
}else if(problemData.value[indexs].type=='multiple'){
parm.submitAnswer=checkList.value.join(',')
}else if(problemData.value[indexs].type=='judge'){
parm.submitAnswer=radio2.value
} }
let header={ let header={
'Authorization':Authorization.value, 'Authorization':Authorization.value,
'Content-Type':"application/json" 'Content-Type':"application/x-www-form-urlencoded"
} }
$api.myRequest('/train/public/trainPractice/submitAnswer', parm,'post',9100,header).then((resData) => { $api.myRequest('/train/public/trainExamDash/submitAnswer', parm,'post',9100,header).then((resData) => {
if(resData&&resData.code==200){ if(resData&&resData.code==200){
analysis.value=true problemData.value[indexs].submitAnswers=true
judgWhether.value=resData.msg if(problemData.value.length==questionIndex.value){
problemList.value[indexs].whether=resData.msg $api.msg('已经是最后一题了,请仔细检查后交卷!')
if(resData.msg=='正确'){ }else{
correctIndex.value++ questionIndex.value+=1
}else if(resData.msg=='错误'){
errorsIndex.value++
} }
accuracyRates()
} }
}); });
}; };
function selected(i){ //完成练习
radio.value=i function complete(){
let arr=[]
problemData.value.forEach((item,index)=>{
if(!item.submitAnswers){
arr.push(index+1)
}
})
wx.showModal({
title: '提示',
content: (arr.length>0?'第'+arr.join(",")+'题还未作答,':'请仔细检查试卷 ')+'确认是否交卷?',
success (res) {
if (res.confirm) {
onpaper()
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
};
function onpaper(){
let indexs=questionIndex.value-1
let parm={
examPaperId:rows.value.examPaperId,
userId:userInfo.value.userId,
examId:problemData.value[indexs].examId,
useTime:(rows.value.timeLimit*60) - elapsedTime.value,
}
let header={
'Authorization':Authorization.value,
'Content-Type':"application/x-www-form-urlencoded"
}
$api.myRequest('/train/public/trainExamDash/submitExam', parm,'post',9100,header).then((resData) => {
if(resData&&resData.code==200){
$api.msg('提交成功!')
navBack()
}
});
};
function selected(i,index){
problemData.value[index].choice=i
problemData.value=JSON.parse(JSON.stringify(problemData.value))
}; };
//多选 //多选
function selected2(i){ function selected2(i,indexs){
let arr=checkList.value.join(",") let arr=problemData.value[indexs].choice.join(",")
if(arr.indexOf(i) !== -1){ if(arr.indexOf(i) !== -1){
const index = checkList.value.indexOf(i); const index = problemData.value[indexs].choice.indexOf(i);
if (index !== -1) { if (index !== -1) {
checkList.value.splice(index, 1); problemData.value[indexs].choice.splice(index, 1);
} }
}else{ }else{
checkList.value.push(i) problemData.value[indexs].choice.push(i)
} }
problemData.value=JSON.parse(JSON.stringify(problemData.value))
}; };
function judgment(i){ function judgment(i,indexs){
let arr=checkList.value.join(",") let arr=problemData.value[indexs].choice.join(",")
if(arr.indexOf(i) !== -1){ if(arr.indexOf(i) !== -1){
return true return true
}else{ }else{
return false return false
} }
}; };
function selected3(i){ function selected3(i,index){
radio2.value=i // radio2.value=i
problemData.value[index].choice=i
problemData.value=JSON.parse(JSON.stringify(problemData.value))
}; };
// 解析选项 // 解析选项
function parseOptions(options) { function parseOptions(options) {
@@ -320,14 +345,16 @@ function start() {
if (isRunning.value) return if (isRunning.value) return
isRunning.value = true isRunning.value = true
timer = setInterval(() => { timer = setInterval(() => {
elapsedTime.value++ elapsedTime.value-=1
if(elapsedTime.value==0){
// this.$message({
// message: '考试时间已结束,系统将自动交卷',
// type: 'warning'
// });
onpaper()
}
}, 1000) }, 1000)
}; };
function pause() {
if (!isRunning.value) return
clearInterval(timer)
isRunning.value = false
};
function clones(){ function clones(){
dialogVisible.value=false dialogVisible.value=false
}; };
@@ -336,7 +363,17 @@ function switchs(i){
dialogVisible.value=false dialogVisible.value=false
}; };
function exit(){ function exit(){
navBack() wx.showModal({
title: '提示',
content: '直接退出是不计分的, 确定要退出吗?',
success (res) {
if (res.confirm) {
navBack()
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
} }
</script> </script>
@@ -360,23 +397,26 @@ function exit(){
padding: 20rpx 28rpx; padding: 20rpx 28rpx;
box-sizing: border-box; box-sizing: border-box;
.header{ .header{
height: 100rpx; height: 110rpx;
padding: 0 10rpx; padding: 10rpx 10rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
background: linear-gradient(0deg, #4285EC 0%, #0BBAFB 100%); background: linear-gradient(0deg, #4285EC 0%, #0BBAFB 100%);
color: #fff; color: #fff;
font-size: 26rpx; font-size: 26rpx;
border-radius: 10rpx border-radius: 10rpx
.headBtn{ .headerCon{
background: #499FFF; display: flex;
border-radius: 4px; align-items: center;
width: 100rpx; justify-content: space-between;
text-align: center; .headBtn{
height: 50rpx; background: #499FFF;
line-height: 50rpx; border-radius: 4px;
width: 100rpx;
text-align: center;
height: 50rpx;
line-height: 50rpx;
}
} }
} }
.problemCard{ .problemCard{
margin-top: 30rpx; margin-top: 30rpx;

View File

@@ -2,20 +2,69 @@
<div class="app-box"> <div class="app-box">
<div class="con-box"> <div class="con-box">
<div class="tabCon"> <div class="tabCon">
<div class="tabLeft"> <template v-for="(item,index) in gradeData">
<div><span>考试名称</span>456546456</div> <div class="tabLeft">
<div><span>考试时间</span>456546456</div> <div><span>考试名称</span>{{item.name}}</div>
<div><span>考试成绩</span>456546456</div> <div><span>考试时间</span>{{item.createTime}}</div>
</div> <div><span>考试成绩</span>{{item.score}}</div>
<div class="tabRight">查看</div> </div>
<div class="tabLeft"></div> <div class="tabRight" @click="detail(item)">查看</div>
<div class="tabRight">查看</div> </template>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script setup>
import { reactive, inject, watch, ref, onMounted,onBeforeUnmount,computed } from 'vue';
import { onLoad, onShow } from '@dcloudio/uni-app';
const { $api,urls , navTo,navBack , vacanciesTo, formatTotal, config } = inject('globalFunction');
import useUserStore from '@/stores/useUserStore';
import useDictStore from '@/stores/useDictStore';
const userInfo = ref({});
const rows = ref({});
const Authorization = ref('');
const gradeData = ref([]);
onLoad((options) => {
rows.value=options
Authorization.value=uni.getStorageSync('Padmin-Token')||''
getHeart();
});
function getHeart() {
const raw =Authorization.value;
const token = typeof raw === "string" ? raw.trim() : "";
const headers = token ? { 'Authorization': raw.startsWith("Bearer ") ? raw : `Bearer ${token}` }: {}
$api.myRequest("/dashboard/auth/heart", {}, "POST", 10100, headers).then((resData) => {
if (resData.code == 200) {
getUserInfo();
} else {
navTo('/packageB/login')
}
});
};
function getUserInfo(){
let header={
'Authorization':Authorization.value
}
$api.myRequest('/system/user/login/user/info', {},'get',10100,header).then((resData) => {
userInfo.value = resData.info || {};
// userId.value=resData.info.userId
queryData()
});
};
function queryData(){
$api.myRequest('/train/public/trainExamDash/getExamByIdTable', {
userId:userInfo.value.userId,
examPaperId:rows.value.examPaperId,
}).then((resData) => {
if(resData&&resData.code==200){
gradeData.value=resData.rows
}
});
}
function detail(row){
navTo('/packageB/train/mockExam/paperDetails?examPaperId='+row.examPaperId+'&examId='+row.examId+'&name='+row.name);
}
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
@@ -40,17 +89,21 @@
flex-wrap: wrap; flex-wrap: wrap;
.tabLeft{ .tabLeft{
width: 80%; width: 80%;
height: 140rpx; height: 150rpx;
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
border-right: 1px solid #ccc; border-right: 1px solid #ccc;
box-sizing: border-box; box-sizing: border-box;
view{ view{
line-height: 45rpx line-height: 45rpx
color: #2175F3;
label{
color: #666;
}
} }
} }
.tabRight{ .tabRight{
width: 20%; width: 20%;
height: 140rpx; height: 150rpx;
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
border-right: 1px solid #ccc; border-right: 1px solid #ccc;
box-sizing: border-box; box-sizing: border-box;

View File

@@ -273,6 +273,9 @@ function submit(){
}else if(resData.msg=='错误'){ }else if(resData.msg=='错误'){
errorsIndex.value++ errorsIndex.value++
} }
if(questionIndex.value==problemData.value.length){
$api.msg('已经是最后一题了,请点击 “完成练习” 按钮保存记录')
}
accuracyRates() accuracyRates()
} }
}); });
@@ -343,7 +346,21 @@ function switchs(i){
dialogVisible.value=false dialogVisible.value=false
}; };
function exit(){ function exit(){
navBack() let header={
'Authorization':Authorization.value,
'Content-Type':"application/x-www-form-urlencoded"
}
$api.myRequest('/train/public/trainPractice/getCount', {
userId: userInfo.value.userId,
title:"专项练习",
type:"practice",
hour:elapsedTime.value,
truePresent:accuracyRate.value
},'post',9100,header).then((resData) => {
if(resData&&resData.code==200){
navBack()
}
});
} }
</script> </script>

View File

@@ -1,4 +1,4 @@
import request from '@/utilCa/request.js' import request from '@/packageCa/utilCa/request.js'
const api = {} const api = {}
// 获取职业大类 中类 // 获取职业大类 中类
@@ -9,3 +9,4 @@ api.queryJobListByParentCode = (name,code) => request.globalRequest(`/Job/QueryJ
api.queryJobDetailById = (id) => request.globalRequest(`/Job/QueryJobDetailById?id=${id}`,'GET', {}, 2,3) api.queryJobDetailById = (id) => request.globalRequest(`/Job/QueryJobDetailById?id=${id}`,'GET', {}, 2,3)
export default api export default api

View File

@@ -1,4 +1,4 @@
import request from '@/utilCa/request.js' import request from '@/packageCa/utilCa/request.js'
const api = {} const api = {}
// 获取生涯罗盘 // 获取生涯罗盘
@@ -30,3 +30,4 @@ api.queryPathInfo = (encodeId) => request.globalRequest(`/StudentManage/QueryPat
export default api export default api

View File

@@ -1,4 +1,4 @@
import request from '@/utilCa/request.js' import request from '@/packageCa/utilCa/request.js'
const api = {} const api = {}
@@ -123,3 +123,4 @@ api.getUserTestTypeProcessList = (testTypes) => request.globalRequest(`/TestReco
export default api export default api

View File

@@ -1,4 +1,4 @@
import request from '@/utilCa/request.js' import request from '@/packageCa/utilCa/request.js'
const api = {} const api = {}
@@ -78,3 +78,4 @@ api.saveUserBasisInfo = (mobileCode,data) => request.globalRequest(`/user/SaveUs
api.getUserBasisInfo = () => request.globalRequest(`/user/GetUserBasisInfo`,'GET', {}, 1) api.getUserBasisInfo = () => request.globalRequest(`/user/GetUserBasisInfo`,'GET', {}, 1)
export default api export default api

View File

@@ -126,8 +126,8 @@
</template> </template>
<script> <script>
import api from "@/apiCa/job.js" import api from "@/packageCa/apiCa/job.js"
import api1 from "@/apiCa/user.js" import api1 from "@/packageCa/apiCa/user.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -52,7 +52,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/job.js" import api from "@/packageCa/apiCa/job.js"
import jobList from "@/packageCa/job/jobList.json"; import jobList from "@/packageCa/job/jobList.json";
export default { export default {
data() { data() {

View File

@@ -38,7 +38,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/job.js" import api from "@/packageCa/apiCa/job.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -35,7 +35,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/job.js" import api from "@/packageCa/apiCa/job.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -56,7 +56,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/testManage.js" import api from "@/packageCa/apiCa/testManage.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -64,7 +64,7 @@
</view> </view>
</template> </template>
<script> <script>
import api from "@/apiCa/testManage.js" import api from "@/packageCa/apiCa/testManage.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -48,7 +48,7 @@
<script> <script>
import api from "@/apiCa/testManage.js" import api from "@/packageCa/apiCa/testManage.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -76,7 +76,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/testManage.js" import api from "@/packageCa/apiCa/testManage.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -47,7 +47,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/testManage.js" import api from "@/packageCa/apiCa/testManage.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -5,7 +5,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/user.js" import api from "@/packageCa/apiCa/user.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -49,7 +49,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/user.js" import api from "@/packageCa/apiCa/user.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -107,7 +107,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/testManage.js"; import api from "@/packageCa/apiCa/testManage.js";
export default { export default {
props: { props: {
testType: { testType: {

View File

@@ -73,9 +73,9 @@
<script> <script>
import testHead from "@/packageCa/testReport/components/testHead.vue" import testHead from "@/packageCa/testReport/components/testHead.vue"
import contrastBox from "@/packageCa/testReport/components/contrastBox.vue" import contrastBox from "@/packageCa/testReport/components/contrastBox.vue"
import api from "@/apiCa/testManage.js"; import api from "@/packageCa/apiCa/testManage.js";
import theme from '@/uni_modules/lime-echart/static/walden.json'; import theme from '@/uni_modules/lime-echart/static/walden.json';
const echarts = require('../../uni_modules/lime-echart/static/echarts.min.js'); const echarts = require('../../utilCa/echarts.min.js');
// import * as echarts from '@/uni_modules/lime-echart/static/echarts.min'; // import * as echarts from '@/uni_modules/lime-echart/static/echarts.min';
// // 注册主题 // // 注册主题
// echarts.registerTheme('theme', theme); // echarts.registerTheme('theme', theme);

View File

@@ -243,9 +243,9 @@
<script> <script>
import testHead from "@/packageCa/testReport/components/testHead.vue" import testHead from "@/packageCa/testReport/components/testHead.vue"
import contrastBox from "@/packageCa/testReport/components/contrastBox.vue" import contrastBox from "@/packageCa/testReport/components/contrastBox.vue"
import api from "@/apiCa/testManage.js"; import api from "@/packageCa/apiCa/testManage.js";
import theme from '@/uni_modules/lime-echart/static/walden.json'; import theme from '@/uni_modules/lime-echart/static/walden.json';
const echarts = require('../../uni_modules/lime-echart/static/echarts.min.js'); const echarts = require('../../utilCa/echarts.min.js');
// import * as echarts from '@/uni_modules/lime-echart/static/echarts.min'; // import * as echarts from '@/uni_modules/lime-echart/static/echarts.min';
// // 注册主题 // // 注册主题
// echarts.registerTheme('theme', theme); // echarts.registerTheme('theme', theme);

View File

@@ -112,10 +112,10 @@
<script> <script>
import testHead from "@/packageCa/testReport/components/testHead.vue" import testHead from "@/packageCa/testReport/components/testHead.vue"
import contrastBox from "@/packageCa/testReport/components/contrastBox.vue" import contrastBox from "@/packageCa/testReport/components/contrastBox.vue"
import api from "@/apiCa/testManage.js" import api from "@/packageCa/apiCa/testManage.js"
import wayData from "./multipleAbilityData.json"; import wayData from "./multipleAbilityData.json";
import theme from '@/uni_modules/lime-echart/static/walden.json'; import theme from '@/uni_modules/lime-echart/static/walden.json';
const echarts = require('../../uni_modules/lime-echart/static/echarts.min.js'); const echarts = require('../../utilCa/echarts.min.js');
// import * as echarts from '@/uni_modules/lime-echart/static/echarts.min'; // import * as echarts from '@/uni_modules/lime-echart/static/echarts.min';
// // 注册主题 // // 注册主题
// echarts.registerTheme('theme', theme); // echarts.registerTheme('theme', theme);

View File

@@ -400,9 +400,9 @@
import testHead from "@/packageCa/testReport/components/testHead.vue" import testHead from "@/packageCa/testReport/components/testHead.vue"
import contrastBox from "@/packageCa/testReport/components/contrastBox.vue" import contrastBox from "@/packageCa/testReport/components/contrastBox.vue"
import opts from "./chartOpts.js" import opts from "./chartOpts.js"
import api from "@/apiCa/testManage.js"; import api from "@/packageCa/apiCa/testManage.js";
import theme from '@/uni_modules/lime-echart/static/walden.json'; import theme from '@/uni_modules/lime-echart/static/walden.json';
const echarts = require('../../uni_modules/lime-echart/static/echarts.min.js'); const echarts = require('../../utilCa/echarts.min.js');
// import * as echarts from '@/uni_modules/lime-echart/static/echarts.min'; // import * as echarts from '@/uni_modules/lime-echart/static/echarts.min';
// // 注册主题 // // 注册主题
// echarts.registerTheme('theme', theme); // echarts.registerTheme('theme', theme);

View File

@@ -41,9 +41,9 @@
<script> <script>
import testHead from "@/packageCa/testReport/components/testHead.vue" import testHead from "@/packageCa/testReport/components/testHead.vue"
import contrastBox from "@/packageCa/testReport/components/contrastBox.vue" import contrastBox from "@/packageCa/testReport/components/contrastBox.vue"
import api from "@/apiCa/testManage.js"; import api from "@/packageCa/apiCa/testManage.js";
import theme from '@/uni_modules/lime-echart/static/walden.json'; import theme from '@/uni_modules/lime-echart/static/walden.json';
const echarts = require('../../uni_modules/lime-echart/static/echarts.min.js'); const echarts = require('../../utilCa/echarts.min.js');
// import * as echarts from '@/uni_modules/lime-echart/static/echarts.min'; // import * as echarts from '@/uni_modules/lime-echart/static/echarts.min';
// // 注册主题 // // 注册主题
// echarts.registerTheme('theme', theme); // echarts.registerTheme('theme', theme);

View File

@@ -101,7 +101,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/studentProfile.js" import api from "@/packageCa/apiCa/studentProfile.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -47,7 +47,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/user.js" import api from "@/packageCa/apiCa/user.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -124,7 +124,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/studentProfile.js" import api from "@/packageCa/apiCa/studentProfile.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -252,8 +252,8 @@
</template> </template>
<script> <script>
import api from "@/apiCa/user.js" import api from "@/packageCa/apiCa/user.js"
import api1 from "@/apiCa/studentProfile.js" import api1 from "@/packageCa/apiCa/studentProfile.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -133,7 +133,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/studentProfile.js" import api from "@/packageCa/apiCa/studentProfile.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -178,7 +178,7 @@
</template> </template>
<script> <script>
import api from "@/apiCa/studentProfile.js" import api from "@/packageCa/apiCa/studentProfile.js"
export default { export default {
data() { data() {
return { return {

View File

@@ -36,4 +36,5 @@ export {
baseUrl7, baseUrl7,
baseUrl8, baseUrl8,
filestore_site filestore_site
} }

1
packageCa/utilCa/echarts.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -16,4 +16,5 @@ export function ossImageUrl(path, process) {
// 没有处理参数时,直接返回原始路径 // 没有处理参数时,直接返回原始路径
return `${BASE_IMAGE_URL}/${path}`; return `${BASE_IMAGE_URL}/${path}`;
} }

View File

@@ -111,4 +111,5 @@ request.globalRequest = (url, method, data, power, type) => {
} }
}) })
} }
export default request export default request

View File

@@ -0,0 +1,515 @@
// 获取人员基本信息详情
// import { post, get } from '../../utils/request.js'
// export function getPersonInfo(id) {
// return get({
// url: `personnel/personBaseInfo/${id}`,
// method: 'get'
// })
// }
import request from '@/utilsRc/request'
// 根据 userId 获取企业详情
export function companyDetails(userId) {
return request({
method: 'get',
url: `/company/unitBaseInfo/user/${userId}`,
})
}
// 企业-推荐人员信息
export function recommendedPerson(params) {
return request({
url: '/company/unitBaseInfo/recommend/person',
method: 'get',
params
})
}
// 人员邀请
export function invitePerson(params) {
return request({
url: '/company/unitBaseInfo/invite',
method: 'get',
params
})
}
// 获取企业招聘岗位列表
export function jobList(params) {
return request({
url: '/company/unitPostInfo/list',
method: 'get',
params
})
}
// 查找已投递、已推荐、已邀请的人员信息
export function listMatch(query) {
return request({
url: '/company/unitBaseInfo/relevance',
method: 'get',
params: query
})
}
// 添加企业基本信息
export function addJobBase(data) {
return request({
url: '/company/unitBaseInfo',
method: 'post',
data: data
})
}
// 查询部门下拉树结构
export function deptTreeSelect() {
return request({
url: '/system/center/user/deptTree',
method: 'get'
})
}
// 企业发布招聘岗位
export function addJob(data) {
return request({
url: '/company/unitPostInfo',
method: 'post',
data: data
})
}
// 获取招聘工种列表
export function jobTypeList(params) {
return request({
url: '/basicdata/workType/list',
method: 'get',
params
})
}
// 企业基本信息列表
export function jobBaseList(query) {
return request({
url: '/company/unitBaseInfo/list',
method: 'get',
params: query
})
}
// 获取企业招聘岗位信息详细信息
export function getJob(id) {
return request({
url: `/company/unitPostInfo/${id}`,
method: 'get'
})
}
// 修改企业招聘岗位信息
export function updateJob(data) {
return request({
url: '/company/unitPostInfo',
method: 'put',
data: data
})
}
// 修改企业基本信息
export function updateJobBase(data) {
return request({
url: '/company/unitBaseInfo',
method: 'put',
data: data
})
}
// 查询角色详细
export function getJobService(id) {
return request({
url: '/personnel/personBaseInfo/' + id,
method: 'get'
})
}
// 查询推荐人员、已推荐、已邀请 详情
export function getUnitBaseInfo(id) {
return request({
url: '/manage/personDemand/' + id,
method: 'get'
})
}
// 查询工种列表
export function listJobType(query) {
return request({
url: '/basicdata/workType/list',
method: 'get',
params: query
})
}
// 人员基本信息 - 列表
export function personInfoList(query) {
return request({
url: '/personnel/personBaseInfo/list',
method: 'get',
params: query
})
}
// 获取人员基本信息详情
export function getPersonInfo(id) {
return request({
url: `/personnel/personBaseInfo/${id}`,
method: 'get'
})
}
// 删除人员基本信息
export function delPersonInfo(ids) {
return request({
url: '/personnel/personBaseInfo/' + ids,
method: 'delete'
})
}
// 删除录入人员 公用 type = 1 失业中 2 就业困难 3 离校生 4 其他人员
export function delPersonUser(ids) {
return request({
url: `/personnel/personInputInfo/${ids}`,
method: 'delete',
})
}
// 新增人员基本信息
export function addPersonInfo(data) {
return request({
url: '/personnel/personBaseInfo',
method: 'post',
data: data
})
}
// 修改人员基本信息
export function updatePersonInfo(data) {
return request({
url: '/personnel/personBaseInfo',
method: 'put',
data
})
}
//社区人员审核
export function personInfoAudit(data) {
return request({
url: '/personnel/personBaseInfo/audit',
method: 'post',
data: data
})
}
//记录查看身份证
export function recordLookIdCard(params) {
return request({
url: '/personnel/personBaseInfo/recordLookIdCard',
method: 'get',
params
})
}
/* 失业人员 --------------------------------------------- start */
// 新增失业人员
export function addPersonUnemployed(data) {
return request({
url: '/person/unemployment',
method: 'post',
data
})
}
// 失业人员修改
export function updatePersonUnemployed(data) {
return request({
url: '/person/unemployment',
method: 'put',
data,
})
}
// 失业人员列表
export function unemployment(params) {
return request({
url: '/person/unemployment/list',
method: 'get',
params
})
}
// 失业人员详情
export function unemploymentDetails(id) {
return request({
url: `/person/unemployment/${id}`,
method: 'get',
})
}
// 失业人员删除
export function unemploymentDelete(id) {
return request({
url: `/person/unemployment/${id}`,
method: 'delete',
})
}
/* 失业人员 --------------------------------------------- end */
/* 就业困难人员 --------------------------------------------- start */
// 新增就业困难
export function addPersonDifficult(data) {
return request({
url: '/person/findingEmployment',
method: 'post',
data
})
}
// 修改就业困难
export function updatePersonDifficult(data) {
return request({
url: '/person/findingEmployment',
method: 'put',
data
})
}
// 就业困难列表
export function findingEmployment(params) {
return request({
url: '/person/findingEmployment/list',
method: 'get',
params
})
}
// 就业困难详情
export function findingEmploymentDetails(id) {
return request({
url: `/person/findingEmployment/${id}`,
method: 'get',
})
}
// 就业困难删除
export function findingEmploymentDelete(id) {
return request({
url: `/person/findingEmployment/${id}`,
method: 'delete',
})
}
/* 就业困难人员 --------------------------------------------- end */
/* 离校未就业高校生 --------------------------------------------- start */
// 新增离校未就业高校生
export function addLeaveSchool(data) {
return request({
url: '/person/leavingSchoolInfo',
method: 'post',
data
})
}
// 修改离校未就业高校生
export function updateLeaveSchool(data) {
return request({
url: '/person/leavingSchoolInfo',
method: 'put',
data,
})
}
// 高校未就业列表
export function leavingSchoolInfo(params) {
return request({
url: '/person/leavingSchoolInfo/list',
method: 'get',
params
})
}
// 高校未就业详情
export function leavingSchoolInfoDetails(id) {
return request({
url: `/person/leavingSchoolInfo/${id}`,
method: 'get',
})
}
// 高校未就业删除
export function leavingSchoolInfoDelete(id) {
return request({
url: `/person/leavingSchoolInfo/${id}`,
method: 'delete',
})
}
/* 离校未就业高校生 --------------------------------------------- end */
/* 其他人员 --------------------------------------------- start */
// 新增其他人员
export function addOther(data) {
return request({
url: '/person/other',
method: 'post',
data
})
}
// 其他人员修改
export function updateOther(data) {
return request({
url: '/person/other',
method: 'post',
data,
})
}
// 其他人员列表
export function other(params) {
return request({
url: '/person/other/list',
method: 'get',
params
})
}
// 其他人员详情
export function otherDetails(id) {
return request({
url: `/person/other/${id}`,
method: 'get',
})
}
// 其他人员删除
export function otherDelete(id) {
return request({
url: `/person/other/${id}`,
method: 'delete',
})
}
/* 其他人员 --------------------------------------------- end */
// 需求预警列表
export function personAlertList(params) {
return request({
url: '/manage/personDemand/warningList',
method: 'get',
params
})
}
export function personDealList(params) {
return request({
url: '/manage/personDemand/dealingList',
method: 'get',
params
})
}
// 服务追踪 服务类型/服务id
export function serviceTraceability({
demandType,
id
}) {
return request({
// url: `/system/personRequirementsRecords/serviceTraceability/${demandType}/${id}`,
url: `/timelime/timelime/fwzs/${id}`,
method: 'get',
})
}
// 需求办结
export function requirementCompletion(url, data) {
return request({
url,
method: 'post',
data
})
}
//岗位审核
export function jobAudit(data) {
return request({
url: '/company/unitPostInfo/audit',
method: 'post',
data: data
})
}
//社群 首页未完成数
// export function getPeopleCount() {
// return request({
// url: '/pc/index/getPeopleCount',
// method: 'get',
// })
// }
//社群 首页未完成数
export function getDemandUnfinished() {
return request({
url: '/pc/index/todo',
method: 'get',
})
}
// 删除企业招聘岗位信息
export function delJob(ids) {
return request({
url: '/company/unitPostInfo/' + ids,
method: 'delete'
})
}
// 所在社区列表
export function deptList(params) {
return request({
'url': `/system/center/user/deptList`,
'method': 'get',
params
})
}
// 所在社区列表
export function returnPerson(params) {
return request({
'url': `/personnel/personBaseInfo/returnPerson`,
'method': 'get',
params
})
}
// 根据人的身份证查询人的详细信息
export function getIdNumberInfo(params) {
return request({
'url': `/personnel/personBaseInfo/getIdNumberInfo`,
'method': 'get',
params
})
}

View File

@@ -0,0 +1,16 @@
/*
* @Date: 2025-10-31 11:06:15
* @LastEditors: lip
* @LastEditTime: 2025-11-03 12:48:22
*/
// import { post, get } from '@/utilsRc/request'
import request from '@/utilsRc/request'
export function listJobType(query) {
return request({
url: '/basicdata/workType/list',
method: 'get',
params: query
})
}

54
packageRc/apiRc/login.js Normal file
View File

@@ -0,0 +1,54 @@
/*
* @Date: 2025-10-31 11:06:15
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-03 15:51:28
*/
import request from '@/utilsRc/request'
// 登录方法
export function login(data) {
return request({
method: 'get',
url: '/not/login/person/zkrLogin',
params: data,
})
}
export function smsLogin(data) {
return request({
method: 'post',
url: '/personnel/personBaseInfo/loginGrAndQy',
data,
headers: {
isToken: false
}
})
}
export function wechatLogin(data) {
return request({
method: 'post',
url: '/personnel/personBaseInfo/loginGrAndQy',
data,
headers: {
isToken: false
}
})
}
export function register(data) {
return request({
method: 'post',
url: '/personnel/personBaseInfo/loginGrAndQy',
data,
headers: {
isToken: false
}
})
}
// 获取用户详细信息
export function getInfo() {
return request({
url: '/getInfo',
method: 'get'
})
}

View File

@@ -0,0 +1,59 @@
/*
* @Date: 2024-09-25 11:14:29
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 08:56:51
*/
import request from '@/utilsRc/request'
// 查询援助需求列表
export function listAssistService(query) {
return request({
url: '/demand/personAssistDemandInfo/list',
method: 'get',
params: query
})
}
// 查询援助需求详细
export function getAssistService(ids) {
return request({
url: '/demand/personAssistDemandInfo/' + ids,
method: 'get'
})
}
// 新增援助需求
export function addAssistService(data) {
return request({
url: '/demand/personAssistDemandInfo',
method: 'post',
data: data
})
}
// 修改援助需求
export function updateAssistService(data) {
return request({
url: '/demand/personAssistDemandInfo',
method: 'put',
data: data
})
}
// 删除援助需求
export function delAssistService(ids) {
return request({
url: '/manage/personDemand/' + ids,
method: 'delete'
})
}
// 个人援助需求办结
export function finishAssistService(data) {
return request({
url: '/demand/personAssistDemandInfo/assistDone',
method: 'post',
data: data
})
}

View File

@@ -0,0 +1,59 @@
/*
* @Date: 2024-09-25 11:14:29
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 08:56:35
*/
import request from '@/utilsRc/request'
// 查询创业需求列表
export function listEntrepreneurshipService(query) {
return request({
url: '/demand/personEntrepreneurshipDemandInfo/list',
method: 'get',
params: query
})
}
// 查询创业需求详细
export function getEntrepreneurshipService(ids) {
return request({
url: '/demand/personEntrepreneurshipDemandInfo/' + ids,
method: 'get'
})
}
// 新增创业需求
export function addEntrepreneurshipService(data) {
return request({
url: '/demand/personEntrepreneurshipDemandInfo',
method: 'post',
data: data
})
}
// 修改创业需求
export function updateEntrepreneurshipService(data) {
return request({
url: '/demand/personEntrepreneurshipDemandInfo',
method: 'put',
data: data
})
}
// 删除创业需求
export function delEntrepreneurshipService(ids) {
return request({
url: '/manage/personDemand/' + ids,
method: 'delete'
})
}
// 个人援助需求办结
export function finishEntrepreneurshipService(data) {
return request({
url: '/demand/personEntrepreneurshipDemandInfo/entrepreneurshipDone',
method: 'post',
data: data
})
}

View File

@@ -0,0 +1,58 @@
/*
* @Date: 2025-04-07 14:23:47
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 08:56:39
*/
import request from '@/utilsRc/request'
// 查询求职需求列表
export function listJobService(query) {
return request({
url: '/manage/personDemand/list',
method: 'get',
params: query
})
}
// 查询求职需求详细
export function getJobService(ids) {
return request({
url: '/manage/personDemand/' + ids,
method: 'get'
})
}
// 新增求职需求
export function addJobService(data) {
return request({
url: '/manage/personDemand',
method: 'post',
data: data
})
}
// 修改求职需求
export function updateJobService(data) {
return request({
url: '/manage/personDemand',
method: 'put',
data: data
})
}
// 删除求职需求
export function delJobService(ids) {
return request({
url: '/manage/personDemand/' + ids,
method: 'delete'
})
}
//查询服务次数
export function serviceTraceability(userId) {
return request({
url: '/timelime/timelime/getFwcs/' + userId,
method: 'get'
})
}

View File

@@ -0,0 +1,59 @@
/*
* @Date: 2024-09-25 11:14:29
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 08:56:42
*/
import request from '@/utilsRc/request'
// 查询其他需求列表
export function listOtherService(query) {
return request({
url: '/demand/personOtherDemandInfo/list',
method: 'get',
params: query
})
}
// 查询其他需求详细
export function getOtherService(ids) {
return request({
url: '/demand/personOtherDemandInfo/' + ids,
method: 'get'
})
}
// 新增其他需求
export function addOtherService(data) {
return request({
url: '/demand/personOtherDemandInfo',
method: 'post',
data: data
})
}
// 修改其他需求
export function updateOtherService(data) {
return request({
url: '/demand/personOtherDemandInfo',
method: 'put',
data: data
})
}
// 删除其他需求
export function delOtherService(ids) {
return request({
url: '/manage/personDemand/' + ids,
method: 'delete'
})
}
// 个人援助需求办结
export function finishOtherService(data) {
return request({
url: '/demand/personOtherDemandInfo/otherDemandDone',
method: 'post',
data: data
})
}

View File

@@ -0,0 +1,35 @@
/*
* @Date: 2025-10-31 11:06:15
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-05 15:33:21
*/
// 人员接口
// import { post, get } from '@/utilsRc/request'
import request from '@/utilsRc/request'
export function getPersonBase(params) {
return request({
url: '/personnel/personBaseInfo/list',
method: 'get',
params
})
}
export function getPersonList(params) {
return request({
url: '/personnel/personBaseInfo/list',
method: 'get',
params
})
}
// 新增角色
export function addInvestigate(data) {
return request({
// url: '//process/processInterview',
url: '/timelime/timelime',
method: 'post',
data: data
})
}

View File

@@ -0,0 +1,53 @@
/*
* @Date: 2025-11-03 08:48:44
* @LastEditors: lip
* @LastEditTime: 2025-11-03 12:48:41
*/
// 查询个人需求信息列表
// import { post, get } from '@/utilsRc/request'
import request from '@/utilsRc/request'
export function listPersonDemand(query) {
return request({
method: 'get',
url: '/manage/personDemand/list',
params: query
})
}
export function delPersonDemand(id) {
return request({
url: '/manage/personDemand/' + id,
method: 'delete'
})
}
// 查询个人需求信息详细
export function getPersonDemand(id) {
return request({
method: 'get',
url: '/manage/personDemand/' + id,
})
}
// 新增个人需求信息
export function addPersonDemand(data) {
// 确保传递数据前进行日志输出
console.log('addPersonDemand函数接收到的数据:', data);
return request({
url: '/manage/personDemand',
method: 'post', // 修改为大写POST确保请求参数正确传递
data: data
})
}
// 修改个人需求信息
export function updatePersonDemand(data) {
return request({
url: '/manage/personDemand',
method: 'put',
data: data
})
}

View File

@@ -0,0 +1,50 @@
/*
* @Date: 2024-09-25 11:14:29
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 08:56:47
*/
import request from '@/utilsRc/request'
// 查询培训需求列表
export function listTrainService(query) {
return request({
url: '/demand/personTrainDemandInfo/list',
method: 'get',
params: query
})
}
// 查询培训需求详细
export function getTrainService(ids) {
return request({
url: '/demand/personTrainDemandInfo/' + ids,
method: 'get'
})
}
// 新增培训需求
export function addTrainService(data) {
return request({
url: '/demand/personTrainDemandInfo',
method: 'post',
data: data
})
}
// 修改培训需求
export function updateTrainService(data) {
return request({
url: '/demand/personTrainDemandInfo',
method: 'put',
data: data
})
}
// 删除培训需求
export function delTrainService(ids) {
return request({
url: '/manage/personDemand/' + ids,
method: 'delete'
})
}

85
packageRc/apiRc/person.js Normal file
View File

@@ -0,0 +1,85 @@
/*
* @Date: 2025-10-31 13:50:15
* @LastEditors: shirlwang
* @LastEditTime: 2025-10-31 14:30:31
*/
import request from '@/utilsRc/request'
// 人员信息保存
export function savePersonBase(data) {
return request({
'url': '/personnel/personBaseInfo',
'method': 'put',
'data': data
})
}
// 人员信息查询
export function getPersonBase(userId) {
return request({
'url': `/personnel/personBaseInfo/user/${userId}`,
'method': 'get',
})
}
// 获取行政区划列表
export function getQUList() {
return request({
url: `/manage/xzqh//xzqhTree`,
method: 'get'
})
}
// 查询部门下拉树结构
export function deptTreeSelect() {
return request({
url: '/system/center/user/deptTree',
method: 'get'
})
}
// 社群端 根据所在社区 获取姓名
export function generateUserName(deptId) {
return request({
url: `/generateUserName/${deptId}`,
method: 'get'
})
}
// 获取部门列表
export function getDeptList(name,personId) {
return request({
url: `/system/center/user/getDeptList?name=${name}&parentId=${personId}`,
method: 'get'
})
}
// 求职工种列表
export function touristWork() {
return request({
url: `/basicdata/workType/workTypeTree`,
method: 'get'
})
}
// 获取招聘工种列表
export function jobTypeList(params) {
return request({
url: '/basicdata/workType/list',
method: 'get',
params
})
}
// 未读消息数量
export function unreadNum() {
return request({
url: '/manage/tjgw/notReadNum',
method: 'get',
})
}
// 地图类型列表
export function jyshdt(cyfhjd) {
return request({
url: `/jyshdt/jyshdt/queryList?lx=${cyfhjd}`,
method: 'get',
})
}

View File

@@ -0,0 +1,57 @@
/*
* @Descripttion:
* @Author: lip
* @Date: 2025-11-03 12:35:56
* @LastEditors: shirlwang
*/
// import { post, get } from '../../utils/request.js'
import request from '@/utilsRc/request'
// 登录方法
export function personInfoList(data) {
return request({
method: 'get',
url: '/personnel/personBaseInfo/list',
params: data,
})
}
// 需求预警列表
export function personAlertList(params) {
return request({
method: 'get',
url: '/manage/personDemand/warningList',
params
})
}
//经办人数据获取
export function getJbrInfo() {
return request({
method: 'get',
url: `/system/center/user/selectHxjbr`,
method: 'get'
})
}
export function getPersonBase() {
return request({
method: 'get',
url: `/system/center/user/selectHxjbr`,
method: 'get'
})
}
export function returnPerson(params) {
return request({
method: 'get',
'url': `/personnel/personBaseInfo/returnPerson`,
params
})
}
export function getStatistic(params) {
return request({
method: 'get',
'url': `/pc/index/fwqkfx`,
params
})
}

View File

@@ -14,4 +14,5 @@ export function getPolicyDetail(queryParams) {
method: "get", method: "get",
params: queryParams, params: queryParams,
}); });
} }

View File

@@ -0,0 +1,51 @@
/*
* @Date: 2024-09-25 11:14:29
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 08:56:56
*/
import request from '@/utilsRc/request'
// 查询角色列表
export function listInvestigate(query) {
return request({
url: '/process/processInterview/list',
method: 'get',
params: query
})
}
// 查询角色详细
export function getInvestigate(ids) {
return request({
url: '/process/processInterview/' + ids,
method: 'get'
})
}
// 新增角色
export function addInvestigate(data) {
return request({
// url: '/process/processInterview',
url: '/timelime/timelime',
method: 'post',
data: data
})
}
// 修改角色
export function updateInvestigate(data) {
return request({
url: '/process/processInterview',
method: 'put',
data: data
})
}
// 删除角色
export function delInvestigate(ids) {
return request({
url: '/process/processInterview/' + ids,
method: 'delete'
})
}

View File

@@ -0,0 +1,87 @@
/*
* @Date: 2024-09-25 11:14:29
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 08:56:59
*/
import request from '@/utilsRc/request'
// 查询角色列表
export function listJobRecommend(query) {
return request({
url: '/process/processJobRecommend/list',
method: 'get',
params: query
})
}
// 查询角色列表
export function getWorkListReq(query) {
return request({
// url: '/personnel/personBaseInfo/postRecommend',
url: '/company/unitPostInfo/postElectedList',
method: 'get',
params: query
})
}
// 查询角色详细
export function getJobRecommend(ids) {
return request({
url: '/process/processJobRecommend/' + ids,
method: 'get'
})
}
// 新增角色
export function addJobRecommend(data) {
return request({
url: '/process/processJobRecommend',
method: 'post',
data: data
})
}
//岗位推荐保存和办结
export function saveJobRecommend(data) {
return request({
url: '/process/processJobRecommend/create',
method: 'post',
data: data
})
}
// 修改角色
export function updateJobRecommend(data) {
return request({
url: '/process/processJobRecommend',
method: 'put',
data: data
})
}
// 删除角色
export function delJobRecommend(ids) {
return request({
url: '/process/processJobRecommend/' + ids,
method: 'delete'
})
}
// 获取绑定的职位
export function getAddedJobs(params) {
return request({
// url: '/company/postDeliverInfo/list',
url: '/company/unitPostInfo/no/permission/list',
method: 'get',
params,
})
}
// // 获取推荐岗位
// export function getAddedJobs(params) {
// return request({
// url: '/personnel/personBaseInfo/postRecommend',
// method: 'get',
// params,
// })
// }

View File

@@ -0,0 +1,50 @@
/*
* @Date: 2024-09-25 11:14:29
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 08:57:02
*/
import request from '@/utilsRc/request'
// 查询角色列表
export function listJobTrack(query) {
return request({
url: '/process/processEmploymentTracking/list',
method: 'get',
params: query
})
}
// 查询角色详细
export function getJobTrack(ids) {
return request({
url: '/process/processEmploymentTracking/' + ids,
method: 'get'
})
}
// 新增角色
export function addJobTrack(data) {
return request({
url: '/process/processEmploymentTracking',
method: 'post',
data: data
})
}
// 修改角色
export function updateJobTrack(data) {
return request({
url: '/process/processEmploymentTracking',
method: 'put',
data: data
})
}
// 删除角色
export function delJobTrack(ids) {
return request({
url: '/process/processEmploymentTracking/' + ids,
method: 'delete'
})
}

View File

@@ -0,0 +1,50 @@
/*
* @Date: 2024-09-25 11:14:29
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 08:57:05
*/
import request from '@/utilsRc/request'
// 查询角色列表
export function listPolicyConsultation(query) {
return request({
url: '/process/processPolicyConsult/list',
method: 'get',
params: query
})
}
// 查询角色详细
export function getPolicyConsultation(ids) {
return request({
url: '/process/processPolicyConsult/' + ids,
method: 'get'
})
}
// 新增角色
export function addPolicyConsultation(data) {
return request({
url: '/process/processPolicyConsult',
method: 'post',
data: data
})
}
// 修改角色
export function updatePolicyConsultation(data) {
return request({
url: '/process/processPolicyConsult',
method: 'put',
data: data
})
}
// 删除角色
export function delPolicyConsultation(ids) {
return request({
url: '/process/processPolicyConsult/' + ids,
method: 'delete'
})
}

View File

@@ -0,0 +1,50 @@
/*
* @Date: 2024-09-25 11:14:29
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 08:57:09
*/
import request from '@/utilsRc/request'
// 查询角色列表
export function listSkillTrain(query) {
return request({
url: '/process/processSkillTraining/list',
method: 'get',
params: query
})
}
// 查询角色详细
export function getSkillTrain(ids) {
return request({
url: '/process/processSkillTraining/' + ids,
method: 'get'
})
}
// 新增角色
export function addSkillTrain(data) {
return request({
url: '/process/processSkillTraining',
method: 'post',
data: data
})
}
// 修改角色
export function updateSkillTrain(data) {
return request({
url: '/process/processSkillTraining',
method: 'put',
data: data
})
}
// 删除角色
export function delSkillTrain(ids) {
return request({
url: '/process/processSkillTraining/' + ids,
method: 'delete'
})
}

View File

@@ -0,0 +1,64 @@
/*
* @Date: 2025-10-31 15:06:34
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-03 12:20:28
*/
import request from '@/utilsRc/request'
// 查询字典数据列表
export function listData (query) {
return request({
url: '/system/dict/data/list',
method: 'get',
params: query
})
}
// 查询字典数据详细
export function getData (dictCode) {
return request({
url: '/system/dict/data/' + dictCode,
method: 'get'
})
}
// 根据字典类型查询字典数据信息
export function getDicts (dictType) {
return request({
url: '/system/dict/data/type/' + dictType,
method: 'get'
})
}
// 根据字典类型查询字典数据信息
export function getDict (dictType) {
return request({
url: '/system/dict/data/type/' + dictType,
method: 'get'
})
}
// 新增字典数据
export function addData (data) {
return request({
url: '/system/dict/data/add',
method: 'post',
data: data
})
}
// 修改字典数据
export function updateData (data) {
return request({
url: '/system/dict/data',
method: 'post',
data: data
})
}
// 删除字典数据
export function delData (dictCode) {
return request({
url: '/system/dict/data/remove' + dictCode,
method: 'get'
})
}

View File

@@ -0,0 +1,27 @@
import request from '@/utilsRc/request'
// 查询时间轴列表
export function timelineList(params) {
return request({
url: '/timelime/timelime/timeline',
method: 'get',
params
})
}
// 查询时间轴详情列表
export function timeList(params) {
return request({
url: '/timelime/timelime/list',
method: 'get',
params
})
}
//获取时间轴详细信息
export function timeDetails(id) {
return request({
url: '/timelime/timelime/' + id,
method: 'get'
})
}

View File

@@ -184,9 +184,9 @@
</template> </template>
<script> <script>
import {getJbrInfo} from "@/apiRc/personinfo/index" import {getJbrInfo} from "@/packageRc/apiRc/personinfo/index"
import {addInvestigate} from "@/apiRc/needs/person" import {addInvestigate} from "@/packageRc/apiRc/needs/person"
import { getDicts } from '@/apiRc/system/dict.js'; import { getDicts } from '@/packageRc/apiRc/system/dict.js';
import config from '@/utilsRc/config.js' import config from '@/utilsRc/config.js'
import { getToken } from "@/utilsRc/auth"; import { getToken } from "@/utilsRc/auth";
export default { export default {

View File

@@ -97,7 +97,7 @@
</template> </template>
<script> <script>
import { timeList } from "@/apiRc/timeLine"; import { timeList } from "@/packageRc/apiRc/timeLine";
export default { export default {
name: "serviceRecord", name: "serviceRecord",
data() { data() {

View File

@@ -160,8 +160,8 @@ function viewMore() {
let qcjy_xqlx = ref([]) let qcjy_xqlx = ref([])
let qcjy_xqlc = ref([]) let qcjy_xqlc = ref([])
let infoData = ref({}) let infoData = ref({})
import {getDicts} from '@/apiRc/system/dict' import {getDicts} from '@/packageRc/apiRc/system/dict'
import {getStatistic} from '@/apiRc/personinfo/index' import {getStatistic} from '@/packageRc/apiRc/personinfo/index'
onMounted(() => { onMounted(() => {
getlist(); getlist();
getlistyujing(); getlistyujing();

View File

@@ -509,12 +509,12 @@
import { getPersonInfo } from "../../api/company/index.js"; import { getPersonInfo } from "../../api/company/index.js";
// import { listJobService, serviceTraceability } from "@/api/needs/jobService"; // import { listJobService, serviceTraceability } from "@/api/needs/jobService";
import { listPersonDemand, delPersonDemand } from "../../api/needs/personDemand"; import { listPersonDemand, delPersonDemand } from "../../api/needs/personDemand";
import { requirementCompletion } from "@/apiRc/company/index"; import { requirementCompletion } from "@/packageRc/apiRc/company/index";
// import { listEntrepreneurshipService } from "@/api/needs/entrepreneurshipService"; // import { listEntrepreneurshipService } from "@/api/needs/entrepreneurshipService";
// import { listTrainService, delTrainService } from "@/api/needs/trainService"; // import { listTrainService, delTrainService } from "@/api/needs/trainService";
import { listJobType } from "../../api/jobType/index"; import { listJobType } from "../../api/jobType/index";
// import ImageUpload from "@/packageRc/components/ImageUpload"; // import ImageUpload from "@/packageRc/components/ImageUpload";
import {getJbrInfo} from "@/apiRc/personinfo/index" import {getJbrInfo} from "@/packageRc/apiRc/personinfo/index"
import DealDone from "../needs/dealDone.vue"; import DealDone from "../needs/dealDone.vue";
export default { export default {
name: "serviceDetails", name: "serviceDetails",

View File

@@ -173,15 +173,15 @@
<script> <script>
import { import {
getPersonBase getPersonBase
} from "@/apiRc/person"; } from "@/packageRc/apiRc/person";
import { import {
addPersonDemand, addPersonDemand,
updatePersonDemand, updatePersonDemand,
getPersonDemand getPersonDemand
} from "@/apiRc/needs/personDemand"; } from "@/packageRc/apiRc/needs/personDemand";
import { import {
listJobType listJobType
} from "@/apiRc/jobType/index"; } from "@/packageRc/apiRc/jobType/index";
import ImageUpload from '/packageRc/components/ImageUpload' import ImageUpload from '/packageRc/components/ImageUpload'
import ChoosePerson from '/packageRc/pages/needs/components/choosePerson'; import ChoosePerson from '/packageRc/pages/needs/components/choosePerson';
import PlacePicker from "/packageRc/components/placePicker"; import PlacePicker from "/packageRc/components/placePicker";

View File

@@ -46,17 +46,17 @@
<script> <script>
import { import {
getPersonBase getPersonBase
} from "@/apiRc/person"; } from "@/packageRc/apiRc/person";
import { import {
addPersonDemand, addPersonDemand,
updatePersonDemand, updatePersonDemand,
getPersonDemand getPersonDemand
} from "@/apiRc/needs/personDemand"; } from "@/packageRc/apiRc/needs/personDemand";
import ImageUpload from '/packageRc/components/ImageUpload' import ImageUpload from '/packageRc/components/ImageUpload'
import ChoosePerson from '/packageRc/pages/needs/components/choosePerson'; import ChoosePerson from '/packageRc/pages/needs/components/choosePerson';
import { import {
listJobType listJobType
} from "@/apiRc/jobType/index"; } from "@/packageRc/apiRc/jobType/index";
import dayjs from "dayjs"; import dayjs from "dayjs";
export default { export default {

View File

@@ -87,7 +87,7 @@
import { reactive, inject, watch, ref, onMounted, watchEffect, nextTick } from 'vue'; import { reactive, inject, watch, ref, onMounted, watchEffect, nextTick } from 'vue';
const { $api, navTo, vacanciesTo, formatTotal, config } = inject('globalFunction'); const { $api, navTo, vacanciesTo, formatTotal, config } = inject('globalFunction');
import { getPolicyList } from '@/apiRc/policy'; import { getPolicyList } from '@/packageRc/apiRc/policy';
let policyList = ref([]) let policyList = ref([])
function getPolicy() { function getPolicy() {
getPolicyList({pageNum: 1, pageSize: 10}).then(res => { getPolicyList({pageNum: 1, pageSize: 10}).then(res => {

View File

@@ -781,10 +781,6 @@ const handleLiveClick = () => {
// #endif // #endif
}; };
// 跳转到测试页面
const navToTestPage = () => {
navTo("/pages/test/homepage-test");
};
async function loadData() { async function loadData() {
try { try {

View File

@@ -27,7 +27,7 @@
<script> <script>
import { import {
getPersonList getPersonList
} from '@/apiRc/needs/person' } from '@/packageRc/apiRc/needs/person'
export default { export default {
data() { data() {
return { return {

View File

@@ -177,12 +177,12 @@
<script> <script>
import { import {
getPersonBase getPersonBase
} from "@/apiRc/person"; } from "@/packageRc/apiRc/person";
import { import {
addPersonDemand, addPersonDemand,
updatePersonDemand, updatePersonDemand,
getPersonDemand getPersonDemand
} from "@/apiRc/needs/personDemand"; } from "@/packageRc/apiRc/needs/personDemand";
import ImageUpload from '/packageRc/components/ImageUpload' import ImageUpload from '/packageRc/components/ImageUpload'
import ChoosePerson from '/packageRc/pages/needs/components/choosePerson'; import ChoosePerson from '/packageRc/pages/needs/components/choosePerson';
import dayjs from "dayjs"; import dayjs from "dayjs";

View File

@@ -102,15 +102,15 @@
<script> <script>
import { import {
getPersonBase getPersonBase
} from "@/apiRc/person"; } from "@/packageRc/apiRc/person";
import { import {
addPersonDemand, addPersonDemand,
updatePersonDemand, updatePersonDemand,
getPersonDemand getPersonDemand
} from "@/apiRc/needs/personDemand"; } from "@/packageRc/apiRc/needs/personDemand";
import { import {
listJobType listJobType
} from "@/apiRc/jobType/index"; } from "@/packageRc/apiRc/jobType/index";
import ImageUpload from '/packageRc/components/ImageUpload' import ImageUpload from '/packageRc/components/ImageUpload'
import ChoosePerson from '/packageRc/pages/needs/components/choosePerson'; import ChoosePerson from '/packageRc/pages/needs/components/choosePerson';
import PlacePicker from "/packageRc/components/placePicker"; import PlacePicker from "/packageRc/components/placePicker";

View File

@@ -53,17 +53,17 @@
<script> <script>
import { import {
getPersonBase getPersonBase
} from "@/apiRc/person"; } from "@/packageRc/apiRc/person";
import { import {
addPersonDemand, addPersonDemand,
updatePersonDemand, updatePersonDemand,
getPersonDemand getPersonDemand
} from "@/apiRc/needs/personDemand"; } from "@/packageRc/apiRc/needs/personDemand";
import ImageUpload from '/packageRc/components/ImageUpload' import ImageUpload from '/packageRc/components/ImageUpload'
import ChoosePerson from '/packageRc/pages/needs/components/choosePerson'; import ChoosePerson from '/packageRc/pages/needs/components/choosePerson';
import { import {
listJobType listJobType
} from "@/apiRc/jobType/index"; } from "@/packageRc/apiRc/jobType/index";
import dayjs from "dayjs"; import dayjs from "dayjs";
export default { export default {

View File

@@ -107,15 +107,15 @@
<script> <script>
import { import {
getPersonBase getPersonBase
} from "@/apiRc/person"; } from "@/packageRc/apiRc/person";
import { import {
addPersonDemand, addPersonDemand,
updatePersonDemand, updatePersonDemand,
getPersonDemand getPersonDemand
} from "@/apiRc/needs/personDemand"; } from "@/packageRc/apiRc/needs/personDemand";
import { import {
listJobType listJobType
} from "@/apiRc/jobType/index"; } from "@/packageRc/apiRc/jobType/index";
import ImageUpload from '/packageRc/components/ImageUpload' import ImageUpload from '/packageRc/components/ImageUpload'
import ChoosePerson from '/packageRc/pages/needs/components/choosePerson'; import ChoosePerson from '/packageRc/pages/needs/components/choosePerson';
import dayjs from "dayjs"; import dayjs from "dayjs";

View File

@@ -87,8 +87,8 @@
<script> <script>
import ImageUpload from "@/packageRc/components/ImageUpload"; import ImageUpload from "@/packageRc/components/ImageUpload";
import { requirementCompletion } from "@/apiRc/company/index"; import { requirementCompletion } from "@/packageRc/apiRc/company/index";
import {getJbrInfo} from "@/apiRc/personinfo/index" import {getJbrInfo} from "@/packageRc/apiRc/personinfo/index"
export default { export default {
components: { components: {
ImageUpload, ImageUpload,

View File

@@ -161,30 +161,30 @@
import ImageUpload from '/packageRc/components/ImageUpload' import ImageUpload from '/packageRc/components/ImageUpload'
import { import {
requirementCompletion requirementCompletion
} from '@/apiRc/company' } from '@/packageRc/apiRc/company'
import { import {
listJobService, listJobService,
delJobService delJobService
} from '@/apiRc/needs/jobService' } from '@/packageRc/apiRc/needs/jobService'
import { import {
listAssistService, listAssistService,
delAssistService, delAssistService,
finishAssistService finishAssistService
} from '@/apiRc/needs/assistService' } from '@/packageRc/apiRc/needs/assistService'
import { import {
listEntrepreneurshipService, listEntrepreneurshipService,
delEntrepreneurshipService, delEntrepreneurshipService,
finishEntrepreneurshipService finishEntrepreneurshipService
} from '@/apiRc/needs/entrepreneurshipService' } from '@/packageRc/apiRc/needs/entrepreneurshipService'
import { import {
listTrainService, listTrainService,
delTrainService delTrainService
} from '@/apiRc/needs/trainService' } from '@/packageRc/apiRc/needs/trainService'
import { import {
listOtherService, listOtherService,
delOtherService, delOtherService,
finishOtherService finishOtherService
} from '@/apiRc/needs/otherService' } from '@/packageRc/apiRc/needs/otherService'
import DealDone from './dealDone.vue' import DealDone from './dealDone.vue'
export default { export default {
components: { components: {

View File

@@ -68,31 +68,31 @@
<script> <script>
import { import {
getPersonBase getPersonBase
} from "@/apiRc/person"; } from "@/packageRc/apiRc/person";
import { import {
listJobService, listJobService,
delJobService delJobService
} from '@/apiRc/needs/jobService' } from '@/packageRc/apiRc/needs/jobService'
import { listPersonDemand, delPersonDemand } from "@/apiRc/needs/personDemand"; import { listPersonDemand, delPersonDemand } from "@/packageRc/apiRc/needs/personDemand";
import { import {
listAssistService, listAssistService,
delAssistService delAssistService
} from '@/apiRc/needs/assistService' } from '@/packageRc/apiRc/needs/assistService'
import { import {
listEntrepreneurshipService, listEntrepreneurshipService,
delEntrepreneurshipService delEntrepreneurshipService
} from '@/apiRc/needs/entrepreneurshipService' } from '@/packageRc/apiRc/needs/entrepreneurshipService'
import { import {
listTrainService, listTrainService,
delTrainService delTrainService
} from '@/apiRc/needs/trainService' } from '@/packageRc/apiRc/needs/trainService'
import { listJobType } from "@/apiRc/jobType/index"; import { listJobType } from "@/packageRc/apiRc/jobType/index";
import { import {
listOtherService, listOtherService,
delOtherService delOtherService
} from '@/apiRc/needs/otherService' } from '@/packageRc/apiRc/needs/otherService'
export default { export default {
components: { components: {
}, },

View File

@@ -275,7 +275,7 @@ import {
import exitPopup from "../../components/exitPopup.vue"; import exitPopup from "../../components/exitPopup.vue";
import { import {
getDicts getDicts
} from '@/apiRc/system/dict.js' } from '@/packageRc/apiRc/system/dict.js'
export default { export default {
name: "personnelList", name: "personnelList",
components: { components: {

View File

@@ -251,7 +251,7 @@
</view> </view>
</template> </template>
<script> <script>
import { getPolicyDetail } from "@/apiRc/policy"; import { getPolicyDetail } from "@/packageRc/apiRc/policy";
export default { export default {
data() { data() {
return { return {

View File

@@ -48,7 +48,7 @@
</template> </template>
<script> <script>
import PopupList from "/packageRc/components/PopupLists.vue"; import PopupList from "/packageRc/components/PopupLists.vue";
import { getPolicyList } from "../../../apiRc/policy"; import { getPolicyList } from "@/packageRc/apiRc/policy";
export default { export default {
components: { components: {
PopupList, PopupList,

View File

@@ -31,9 +31,9 @@
</template> </template>
<script> <script>
import {getPersonList} from '@/apiRc/needs/person' import {getPersonList} from '@/packageRc/apiRc/needs/person'
import { listJobService } from "@/apiRc/needs/jobService"; import { listJobService } from "@/packageRc/apiRc/needs/jobService";
import { listTrainService } from "@/apiRc/needs/trainService"; import { listTrainService } from "@/packageRc/apiRc/needs/trainService";
export default { export default {
props: { props: {
choiceType: { choiceType: {

View File

@@ -164,7 +164,7 @@
addInvestigate, addInvestigate,
updateInvestigate, updateInvestigate,
getInvestigate getInvestigate
} from "@/apiRc/service/investigate"; } from "@/packageRc/apiRc/service/investigate";
import ImageUpload from '@/packageRc/components/ImageUpload' import ImageUpload from '@/packageRc/components/ImageUpload'
import ChoosePerson from './choosePerson.vue'; import ChoosePerson from './choosePerson.vue';
export default { export default {

View File

@@ -131,18 +131,18 @@
<script> <script>
import { import {
deptTreeSelect deptTreeSelect
} from "@/apiRc/person"; } from "@/packageRc/apiRc/person";
import { import {
addJobRecommend, addJobRecommend,
updateJobRecommend, updateJobRecommend,
getJobRecommend, getJobRecommend,
getAddedJobs, getAddedJobs,
saveJobRecommend saveJobRecommend
} from "@/apiRc/service/jobRecommend"; } from "@/packageRc/apiRc/service/jobRecommend";
import { import {
getPersonDemand getPersonDemand
} from "@/apiRc/needs/personDemand"; } from "@/packageRc/apiRc/needs/personDemand";
import { listJobType } from "@/apiRc/jobType/index"; import { listJobType } from "@/packageRc/apiRc/jobType/index";
import ImageUpload from '@/packageRc/components/ImageUpload' import ImageUpload from '@/packageRc/components/ImageUpload'
import ChoosePerson from './choosePerson.vue'; import ChoosePerson from './choosePerson.vue';
import positionChooser from './positionChooser.vue'; import positionChooser from './positionChooser.vue';

View File

@@ -116,7 +116,7 @@
addJobTrack, addJobTrack,
updateJobTrack, updateJobTrack,
getJobTrack getJobTrack
} from "@/apiRc/service/jobTrack"; } from "@/packageRc/apiRc/service/jobTrack";
import ImageUpload from '@/packageRc/components/ImageUpload' import ImageUpload from '@/packageRc/components/ImageUpload'
import ChoosePerson from './choosePerson.vue'; import ChoosePerson from './choosePerson.vue';
export default { export default {

View File

@@ -74,7 +74,7 @@
addPolicyConsultation, addPolicyConsultation,
updatePolicyConsultation, updatePolicyConsultation,
getPolicyConsultation getPolicyConsultation
} from "@/apiRc/service/policyConsultation"; } from "@/packageRc/apiRc/service/policyConsultation";
import ImageUpload from '@/packageRc/components/ImageUpload' import ImageUpload from '@/packageRc/components/ImageUpload'
import ChoosePerson from './choosePerson.vue'; import ChoosePerson from './choosePerson.vue';
export default { export default {

View File

@@ -69,7 +69,7 @@
</template> </template>
<script> <script>
import { getWorkListReq } from '@/apiRc/service/jobRecommend' import { getWorkListReq } from '@/packageRc/apiRc/service/jobRecommend'
export default { export default {
data() { data() {
return { return {

View File

@@ -105,7 +105,7 @@
addSkillTrain, addSkillTrain,
updateSkillTrain, updateSkillTrain,
getSkillTrain getSkillTrain
} from "@/apiRc/service/skillTrain"; } from "@/packageRc/apiRc/service/skillTrain";
import ImageUpload from '@/packageRc/components/ImageUpload' import ImageUpload from '@/packageRc/components/ImageUpload'
import ChoosePerson from './choosePerson.vue'; import ChoosePerson from './choosePerson.vue';
export default { export default {

View File

@@ -29,7 +29,7 @@
<script> <script>
import { import {
serviceTraceability serviceTraceability
} from '@/apiRc/company/index.js'; } from '@/packageRc/apiRc/company/index.js';
export default { export default {
name: 'personnelList', name: 'personnelList',

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 516 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 896 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Some files were not shown because too many files have changed in this diff Show More