检查记录添加操作人首页微调刷脸签到
This commit is contained in:
parent
c435659368
commit
c2d2e2405b
|
|
@ -0,0 +1,15 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
export function faceLogin(data) {
|
||||||
|
return request({
|
||||||
|
url: '/hrm/facelogin/',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function clockRecord(data) {
|
||||||
|
return request({
|
||||||
|
url: '/hrm/clock_record/',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -10,8 +10,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {faceLogin} from "@/api/testModel";
|
import { clockRecord } from '@/api/hrm'
|
||||||
import { getTickets } from "@/api/workflow";
|
|
||||||
import tracking from '@/assets/tracking/build/tracking-min.js';
|
import tracking from '@/assets/tracking/build/tracking-min.js';
|
||||||
import '@/assets/tracking/build/data/face-min.js';
|
import '@/assets/tracking/build/data/face-min.js';
|
||||||
|
|
||||||
|
|
@ -62,7 +61,7 @@
|
||||||
// 避免在新的浏览器中使用它,因为它正在被弃用。
|
// 避免在新的浏览器中使用它,因为它正在被弃用。
|
||||||
_this.video.src = window.URL.createObjectURL(stream)
|
_this.video.src = window.URL.createObjectURL(stream)
|
||||||
}
|
}
|
||||||
_this.video.onloadedmetadata = function (e) {
|
_this.video.onloadedmetadata = function () {
|
||||||
_this.video.play();
|
_this.video.play();
|
||||||
};
|
};
|
||||||
_this.init();
|
_this.init();
|
||||||
|
|
@ -117,33 +116,12 @@
|
||||||
let base64Img = canvas.toDataURL('image/jpeg');
|
let base64Img = canvas.toDataURL('image/jpeg');
|
||||||
let img = base64Img.split(',')[1];
|
let img = base64Img.split(',')[1];
|
||||||
let imgData = {base64:img};
|
let imgData = {base64:img};
|
||||||
faceLogin(imgData).then((res) => {
|
clockRecord(imgData).then((res) => {
|
||||||
if (res.code >= 200) {
|
if (res.code === 200&&res.data.id) {
|
||||||
/* debugger;
|
this.$message.success(res.data.name+'签到成功!');
|
||||||
console.log(res.data);
|
setTimeout(()=>{
|
||||||
getTickets( {token:res.data.access,page:1,page_size:10}).then((resp)=>{
|
|
||||||
if(resp.code>=200){
|
|
||||||
debugger;
|
|
||||||
console.log(resp.data);
|
|
||||||
}
|
|
||||||
})*/
|
|
||||||
that.uploadLock = false;
|
|
||||||
this.$message.success(res.data.username+'签到成功!');
|
|
||||||
/*that.$confirm("是否提交?", "提示", {
|
|
||||||
confirmButtonText: "确认",
|
|
||||||
cancelButtonText: "取消",
|
|
||||||
type: "warning",
|
|
||||||
}).then(async () => {
|
|
||||||
// that.$emit('func',false);
|
|
||||||
// 请求接口成功以后打开锁
|
|
||||||
that.uploadLock = false;
|
that.uploadLock = false;
|
||||||
}).catch((err) => {
|
},3000)
|
||||||
that.$message.success(err);
|
|
||||||
// that.$emit('func',false);
|
|
||||||
// 请求接口成功以后打开锁
|
|
||||||
that.uploadLock = false;
|
|
||||||
});*/
|
|
||||||
// this.$message.success("成功");
|
|
||||||
}else{
|
}else{
|
||||||
// 打开锁
|
// 打开锁
|
||||||
that.uploadLock = false;
|
that.uploadLock = false;
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ export const constantRoutes = [
|
||||||
path: 'dashboard',
|
path: 'dashboard',
|
||||||
name: 'Dashboard',
|
name: 'Dashboard',
|
||||||
component: () => import('@/views/dashboard/index'),
|
component: () => import('@/views/dashboard/index'),
|
||||||
meta: { title: '首页', icon: 'dashboard', affix: true }
|
meta: { title: '首页', icon: 'dashboard', affix: true,keepAlive: false }
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -141,12 +141,12 @@
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
<el-row :gutter="5">
|
<el-row :gutter="5">
|
||||||
<el-col :span="12">
|
<el-col :span="8">
|
||||||
<div class="dashboardBottomRow">
|
<div class="dashboardBottomRow">
|
||||||
<div class="dashboardCardHand">
|
<div class="dashboardCardHand">
|
||||||
<div class="CardTitleWrap">
|
<div class="CardTitleWrap">
|
||||||
<span class="verticalLine"></span><span class="dashboardCardTitle">库存列表</span>
|
<span class="verticalLine"></span><span class="dashboardCardTitle">生产设备</span>
|
||||||
<span class="stockMore" @click="stockMore">更多>></span>
|
<!--<span class="stockMore" @click="stockMore">更多>></span>-->
|
||||||
</div>
|
</div>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<el-pagination
|
<el-pagination
|
||||||
|
|
@ -193,7 +193,59 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="8">
|
||||||
|
<div class="dashboardBottomRow">
|
||||||
|
<div class="dashboardCardHand">
|
||||||
|
<div class="CardTitleWrap">
|
||||||
|
<span class="verticalLine"></span><span class="dashboardCardTitle">人员到岗</span>
|
||||||
|
<!--<span class="stockMore" @click="stockMore">更多>></span>-->
|
||||||
|
</div>
|
||||||
|
<div class="block">
|
||||||
|
<el-pagination
|
||||||
|
:current-page.sync="stockPage"
|
||||||
|
:page-size="stockPageSize"
|
||||||
|
layout="prev, pager, next, jumper"
|
||||||
|
:total="stockTotal"
|
||||||
|
@size-change="handleStockSizeChange"
|
||||||
|
@current-change="handleStockCurrentChange"
|
||||||
|
>
|
||||||
|
</el-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dashboardCardPadding">
|
||||||
|
<el-table
|
||||||
|
v-loading="listLoadingStock"
|
||||||
|
:data="stockList"
|
||||||
|
fit stripe
|
||||||
|
size="mini"
|
||||||
|
:height="cardTabelHeight"
|
||||||
|
style="border-top: 1px solid #f5f5f5;"
|
||||||
|
>
|
||||||
|
<el-table-column label="物料编号" prop="material_">
|
||||||
|
<template slot-scope="scope">{{ scope.row.material_.number }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="物料名称" prop="material_" show-overflow-tooltip>
|
||||||
|
<template slot-scope="scope">{{ scope.row.material_.name }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="规格型号" prop="material_" show-overflow-tooltip>
|
||||||
|
<template slot-scope="scope">{{ scope.row.material_.specification }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="物料类型" prop="material_">
|
||||||
|
<template slot-scope="scope">{{options[scope.row.material_.type]}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="单位" prop="material_">
|
||||||
|
<template slot-scope="scope">{{scope.row.material_.unit}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="库存" prop="count">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="仓库" prop="warehouse_">
|
||||||
|
<template slot-scope="scope">{{ scope.row.warehouse_.name }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
<div class="dashboardBottomRow">
|
<div class="dashboardBottomRow">
|
||||||
<div class="dashboardCardHand">
|
<div class="dashboardCardHand">
|
||||||
<div class="CardTitleWrap">
|
<div class="CardTitleWrap">
|
||||||
|
|
@ -342,6 +394,18 @@
|
||||||
'count'
|
'count'
|
||||||
])
|
])
|
||||||
},
|
},
|
||||||
|
watch:{
|
||||||
|
"$route":{
|
||||||
|
handler(route){
|
||||||
|
debugger;
|
||||||
|
let that = this;
|
||||||
|
if(route.name==='dashboard'){
|
||||||
|
location. reload();
|
||||||
|
// that.handlerCheckList(this.list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getNoticeData() {
|
getNoticeData() {
|
||||||
this.ScrollUp();
|
this.ScrollUp();
|
||||||
|
|
@ -473,7 +537,12 @@
|
||||||
//图标渲染
|
//图标渲染
|
||||||
drawChart() {
|
drawChart() {
|
||||||
let that = this;
|
let that = this;
|
||||||
|
debugger;
|
||||||
|
console.log(document.getElementById('chartColumn'));
|
||||||
|
debugger;
|
||||||
this.chartColumn = echarts.init(document.getElementById('chartColumn'));
|
this.chartColumn = echarts.init(document.getElementById('chartColumn'));
|
||||||
|
console.log(this.chartColumn );
|
||||||
|
|
||||||
this.chartColumn.setOption({
|
this.chartColumn.setOption({
|
||||||
// title: { text: '成品率' },
|
// title: { text: '成品率' },
|
||||||
grid: {
|
grid: {
|
||||||
|
|
@ -811,8 +880,8 @@
|
||||||
mounted() {
|
mounted() {
|
||||||
let hei = document.getElementsByClassName('app-main')[0].clientHeight;
|
let hei = document.getElementsByClassName('app-main')[0].clientHeight;
|
||||||
let heig = document.getElementsByClassName('dashboardTopCard')[0].clientHeight;
|
let heig = document.getElementsByClassName('dashboardTopCard')[0].clientHeight;
|
||||||
this.cardTabelHeight = ((hei - heig - 130) / 2);
|
this.cardTabelHeight = ((hei - heig - 140) / 2);
|
||||||
this.ganttHeight = this.cardTabelHeight - 50;
|
this.ganttHeight = this.cardTabelHeight - 45;
|
||||||
document.getElementById('chartColumn').style.height = this.cardTabelHeight - 35 + 'px';
|
document.getElementById('chartColumn').style.height = this.cardTabelHeight - 35 + 'px';
|
||||||
this.getPlanList();
|
this.getPlanList();
|
||||||
this.getStockList();
|
this.getStockList();
|
||||||
|
|
@ -820,9 +889,6 @@
|
||||||
this.getStatisticsData();
|
this.getStatisticsData();
|
||||||
this.getNoticeData();
|
this.getNoticeData();
|
||||||
},
|
},
|
||||||
updated() {
|
|
||||||
this.drawChart()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,14 @@
|
||||||
<el-table-column label="检查类型">
|
<el-table-column label="检查类型">
|
||||||
<template slot-scope="scope">{{ checkTypes[scope.row.type] }}</template>
|
<template slot-scope="scope">{{ checkTypes[scope.row.type] }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="操作人">
|
||||||
|
<template slot-scope="scope">{{ scope.row.create_by_.name }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作时间">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{scope.row.update_time.substring(0,scope.row.update_time.length-3)}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="是否提交">
|
<el-table-column label="是否提交">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.row.is_submited">已提交</span>
|
<span v-if="scope.row.is_submited">已提交</span>
|
||||||
|
|
@ -121,30 +129,48 @@
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col v-for="item in fieldList" :key="item.id" :span="12">
|
<el-col :span="12">
|
||||||
<div class="items">
|
<div class="items">
|
||||||
|
<span class="itemLabel">操作人:</span>
|
||||||
|
<span>{{create_by_}}</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="items">
|
||||||
|
<span class="itemLabel">操作时间:</span>
|
||||||
|
<span>{{update_time}}</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col v-for="item in fieldList" :key="item.id" :span="12">
|
||||||
|
<div class="items" v-if="item.field_type!=='draw'&&item.field_value!==null&&item.field_value!==''">
|
||||||
<span class="itemLabel">{{item.field_name}}:</span>
|
<span class="itemLabel">{{item.field_name}}:</span>
|
||||||
<span>{{item.field_value}}</span>
|
<span>{{item.field_value}}</span>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col v-for="item in fieldList" :key="item.id" :span="24">
|
||||||
|
<div class="items" v-if="item.field_type==='draw'" style="height: 400px">
|
||||||
|
<span class="itemLabel">{{item.field_name}}:</span>
|
||||||
|
<img style="width: 45%;vertical-align: text-top;" :src="'http://47.95.0.242:2222'+item.field_value"/>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { getfifodetailList } from "@/api/inm";
|
import {getfifodetailList} from "@/api/inm";
|
||||||
import checkPermission from "@/utils/permission";
|
import checkPermission from "@/utils/permission";
|
||||||
import { mtest,getwproductList } from "@/api/wpm";
|
import {mtest, getwproductList} from "@/api/wpm";
|
||||||
import { getrecordformList, getrffieldList} from "@/api/mtm";
|
import {getrecordformList, getrffieldList} from "@/api/mtm";
|
||||||
import {getTestRecord,getTestRecordItem} from "@/api/qm";
|
import {getTestRecord, getTestRecordItem} from "@/api/qm";
|
||||||
import Pagination from "@/components/Pagination"; // secondary package based on el-pagination
|
import Pagination from "@/components/Pagination"; // secondary package based on el-pagination
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { Pagination },
|
components: {Pagination},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
wproductList: {
|
wproductList: {
|
||||||
count: 0,
|
count: 0,
|
||||||
},
|
},
|
||||||
listQuery: {
|
listQuery: {
|
||||||
|
|
@ -176,6 +202,8 @@ export default {
|
||||||
mtestform: {
|
mtestform: {
|
||||||
is_mtestok: false,
|
is_mtestok: false,
|
||||||
},
|
},
|
||||||
|
create_by_: '',
|
||||||
|
update_time: '',
|
||||||
wproduct: null,
|
wproduct: null,
|
||||||
recordList: [],
|
recordList: [],
|
||||||
fieldList: [],
|
fieldList: [],
|
||||||
|
|
@ -244,6 +272,8 @@ export default {
|
||||||
handleRecordDetail(scope) {
|
handleRecordDetail(scope) {
|
||||||
let that = this;
|
let that = this;
|
||||||
that.fieldList = [];
|
that.fieldList = [];
|
||||||
|
that.create_by_ = scope.row.create_by_.name;
|
||||||
|
that.update_time = scope.row.update_time;
|
||||||
getTestRecordItem(scope.row.id).then((res) => {
|
getTestRecordItem(scope.row.id).then((res) => {
|
||||||
if (res.code >= 200) {
|
if (res.code >= 200) {
|
||||||
debugger;
|
debugger;
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,16 @@
|
||||||
{{checkTypes[scope.row.type]}}
|
{{checkTypes[scope.row.type]}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="操作人">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.create_by_.name }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作时间">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{scope.row.update_time.substring(0,scope.row.update_time.length-3)}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="是否提交">
|
<el-table-column label="是否提交">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.row.is_submited">已提交</span>
|
<span v-if="scope.row.is_submited">已提交</span>
|
||||||
|
|
@ -48,8 +58,20 @@
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="items">
|
||||||
|
<span class="itemLabel">操作人:</span>
|
||||||
|
<span>{{create_by_}}</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="items">
|
||||||
|
<span class="itemLabel">操作时间:</span>
|
||||||
|
<span>{{update_time}}</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
<el-col v-for="item in fieldList" :key="item.id" :span="12">
|
<el-col v-for="item in fieldList" :key="item.id" :span="12">
|
||||||
<div class="items" v-if="item.field_type!=='draw'">
|
<div class="items" v-if="item.field_type!=='draw'&&item.field_value!==null&&item.field_value!==''">
|
||||||
<span class="itemLabel">{{item.field_name}}:</span>
|
<span class="itemLabel">{{item.field_name}}:</span>
|
||||||
<span>{{item.field_value}}</span>
|
<span>{{item.field_value}}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -89,6 +111,8 @@
|
||||||
50: '已完成',
|
50: '已完成',
|
||||||
60: '军检完成'
|
60: '军检完成'
|
||||||
},
|
},
|
||||||
|
create_by_:'',
|
||||||
|
update_time:'',
|
||||||
recordVisible: false,
|
recordVisible: false,
|
||||||
customfieldList: [],
|
customfieldList: [],
|
||||||
recordform: null,
|
recordform: null,
|
||||||
|
|
@ -140,6 +164,8 @@
|
||||||
handleRecordDetail(scope) {
|
handleRecordDetail(scope) {
|
||||||
let that = this;
|
let that = this;
|
||||||
that.fieldList = [];
|
that.fieldList = [];
|
||||||
|
that.create_by_ = scope.row.create_by_.name;
|
||||||
|
that.update_time = scope.row.update_time;
|
||||||
getTestRecordItem(scope.row.id).then((res) => {
|
getTestRecordItem(scope.row.id).then((res) => {
|
||||||
if (res.code >= 200) {
|
if (res.code >= 200) {
|
||||||
debugger;
|
debugger;
|
||||||
|
|
|
||||||
|
|
@ -474,6 +474,14 @@
|
||||||
<el-table-column label="检查类型">
|
<el-table-column label="检查类型">
|
||||||
<template slot-scope="scope">{{ checkTypes[scope.row.type] }}</template>
|
<template slot-scope="scope">{{ checkTypes[scope.row.type] }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="操作人">
|
||||||
|
<template slot-scope="scope">{{ scope.row.create_by_.name }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作时间">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{scope.row.update_time.substring(0,scope.row.update_time.length-3)}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="是否提交">
|
<el-table-column label="是否提交">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.row.is_submited">已提交</span>
|
<span v-if="scope.row.is_submited">已提交</span>
|
||||||
|
|
@ -620,8 +628,20 @@
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="items">
|
||||||
|
<span class="itemLabel">操作人:</span>
|
||||||
|
<span>{{create_by_}}</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="items">
|
||||||
|
<span class="itemLabel">操作时间:</span>
|
||||||
|
<span>{{update_time}}</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
<el-col v-for="item in fieldList" :key="item.id" :span="12">
|
<el-col v-for="item in fieldList" :key="item.id" :span="12">
|
||||||
<div class="items" v-if="item.field_type!=='draw'">
|
<div class="items" v-if="item.field_type!=='draw'&&item.field_value!==null&&item.field_value!==''">
|
||||||
<span class="itemLabel">{{item.field_name}}:</span>
|
<span class="itemLabel">{{item.field_name}}:</span>
|
||||||
<span>{{item.field_value}}</span>
|
<span>{{item.field_value}}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -693,6 +713,8 @@
|
||||||
page: 1,
|
page: 1,
|
||||||
page_size: 20,
|
page_size: 20,
|
||||||
},
|
},
|
||||||
|
create_by_: '',
|
||||||
|
update_time: '',
|
||||||
formLabelWidth: '',
|
formLabelWidth: '',
|
||||||
formLabelWidthL: '',
|
formLabelWidthL: '',
|
||||||
actstate_: {
|
actstate_: {
|
||||||
|
|
@ -1109,6 +1131,8 @@
|
||||||
handleRecordDetail(scope) {
|
handleRecordDetail(scope) {
|
||||||
let that = this;
|
let that = this;
|
||||||
that.fieldList = [];
|
that.fieldList = [];
|
||||||
|
that.create_by_ = scope.row.create_by_.name;
|
||||||
|
that.update_time = scope.row.update_time;
|
||||||
getTestRecordItem(scope.row.id).then((res) => {
|
getTestRecordItem(scope.row.id).then((res) => {
|
||||||
if (res.code >= 200) {
|
if (res.code >= 200) {
|
||||||
that.recordFinishedVisible = true;
|
that.recordFinishedVisible = true;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue