This commit is contained in:
shijing 2022-03-29 08:45:12 +08:00
parent 194b0f9731
commit ad16a963e4
7 changed files with 720 additions and 608 deletions

View File

@ -153,13 +153,14 @@
debugger; debugger;
let video = document.getElementById('video'); let video = document.getElementById('video');
let stream = video.srcObject; let stream = video.srcObject;
console.log(stream);
let tracks = stream.getTracks(); let tracks = stream.getTracks();
this.$emit('close');
tracks.forEach(track => { tracks.forEach(track => {
track.stop() track.stop()
}); });
video.srcObject = null; video.srcObject = null;
this.video.srcObject.getTracks()[0].stop(); this.video.srcObject.getTracks()[0].stop();
}, },
}, },
beforeDestroy() { beforeDestroy() {
@ -177,10 +178,6 @@
</script> </script>
<style scoped> <style scoped>
.faceLoginWrap{ .faceLoginWrap{
/*padding: 50px;*/
/*width: 600px;*/
/*height: 600px;*/
/*background: #000000;*/
margin:50px auto 0 auto; margin:50px auto 0 auto;
box-sizing: border-box; box-sizing: border-box;
} }
@ -194,7 +191,6 @@
position: relative; position: relative;
width: 500px; width: 500px;
height: 500px; height: 500px;
/*background: #000000;*/
text-align: center; text-align: center;
} }

View File

@ -11,9 +11,9 @@ const getDefaultState = () => {
count: {}, count: {},
perms: [] perms: []
} }
} };
const state = getDefaultState() const state = getDefaultState();
const mutations = { const mutations = {
RESET_STATE: (state) => { RESET_STATE: (state) => {
@ -34,17 +34,17 @@ const mutations = {
SET_COUNT: (state, count) => { SET_COUNT: (state, count) => {
state.count = count state.count = count
} }
} };
const actions = { const actions = {
// user login // user login
login({ commit }, userInfo) { login({ commit }, userInfo) {
const { username, password } = userInfo const { username, password } = userInfo;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
login({ username: username.trim(), password: password }).then(response => { login({ username: username.trim(), password: password }).then(response => {
const { data } = response const { data } = response;
commit('SET_TOKEN', data.access) commit('SET_TOKEN', data.access);
setToken(data.access) setToken(data.access);
resolve() resolve()
}).catch(error => { }).catch(error => {
@ -57,22 +57,23 @@ const actions = {
getInfo({ commit, state }) { getInfo({ commit, state }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getInfo(state.token).then(response => { getInfo(state.token).then(response => {
const { data } = response const { data } = response;
sessionStorage.setItem('userId',data.id); sessionStorage.setItem('userId',data.id);
if (!data) { if (!data) {
reject('验证失败,重新登陆.') this.$router.push({name:'login',params:{}});
reject('验证失败,重新登陆.');
} }
const { perms, name, avatar } = data const { perms, name, avatar } = data;
// perms must be a non-empty array // perms must be a non-empty array
if (!perms || perms.length <= 0) { if (!perms || perms.length <= 0) {
reject('没有任何权限!') reject('没有任何权限!')
} }
commit('SET_PERMS', perms) commit('SET_PERMS', perms);
commit('SET_NAME', name) commit('SET_NAME', name);
commit('SET_AVATAR', avatar) commit('SET_AVATAR', avatar);
resolve(data) resolve(data)
}).catch(error => { }).catch(error => {
reject(error) reject(error)
@ -84,9 +85,9 @@ const actions = {
logout({ commit, state }) { logout({ commit, state }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
logout(state.token).then(() => { logout(state.token).then(() => {
removeToken() // must remove token first removeToken();// must remove token first
resetRouter() resetRouter();
commit('RESET_STATE') commit('RESET_STATE');
resolve() resolve()
}).catch(error => { }).catch(error => {
reject(error) reject(error)

View File

@ -117,7 +117,21 @@
<el-input v-model="vendor.address" placeholder="地址"/> <el-input v-model="vendor.address" placeholder="地址"/>
</el-form-item> </el-form-item>
<el-form-item label="供应物料" prop="material"> <el-form-item label="供应物料" prop="material">
<el-input v-model="vendor.material" placeholder="供应物料"/> <el-select
v-model="vendor.material"
style="width: 100%"
filterable
placeholder="请选择供应物料"
>
<el-option
v-for="item in materialList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
<!--<el-input v-model="vendor.material" placeholder="供应物料"/>-->
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="description"> <el-form-item label="备注" prop="description">
<el-input <el-input
@ -136,6 +150,7 @@
</div> </div>
</template> </template>
<script> <script>
import {getMaterialList} from "@/api/mtm";
import {getpVendorList, createVendor, updateVendor, deleteVendor} from "@/api/vendor"; import {getpVendorList, createVendor, updateVendor, deleteVendor} from "@/api/vendor";
// import {getUserList} from "@/api/user"; // import {getUserList} from "@/api/user";
import checkPermission from "@/utils/permission"; import checkPermission from "@/utils/permission";
@ -167,6 +182,7 @@
page: 1, page: 1,
page_size: 20, page_size: 20,
}, },
materialList: [],
keeperOptions: [], keeperOptions: [],
listLoading: true, listLoading: true,
dialogVisible: false, dialogVisible: false,
@ -183,6 +199,7 @@
watch: {}, watch: {},
created() { created() {
this.getList(); this.getList();
this.getMaterial();
}, },
methods: { methods: {
checkPermission, checkPermission,
@ -197,6 +214,15 @@
}); });
}, },
getMaterial(){
this.listLoading = true;
getMaterialList({page:0}).then((response) => {
if (response.data) {
this.materialList = response.data;
}
this.listLoading = false;
});
},
handleFilter() { handleFilter() {
this.listQuery.page = 1; this.listQuery.page = 1;
this.getList(); this.getList();

View File

@ -266,6 +266,9 @@
> >
<template slot-scope="scope">{{ scope.row.step_.name }}</template> <template slot-scope="scope">{{ scope.row.step_.name }}</template>
</el-table-column> </el-table-column>
<el-table-column label="检验员">
<!--<template slot-scope="scope">{{}}</template>-->
</el-table-column>
<el-table-column align="center" label="操作" width="220px"> <el-table-column align="center" label="操作" width="220px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-link <el-link
@ -356,6 +359,9 @@
<el-table-column label="子计划编号"> <el-table-column label="子计划编号">
<template slot-scope="scope">{{ scope.row.subproduction_plan_.number }}</template> <template slot-scope="scope">{{ scope.row.subproduction_plan_.number }}</template>
</el-table-column> </el-table-column>
<el-table-column label="检验员">
<!--<template slot-scope="scope">{{}}</template>-->
</el-table-column>
<el-table-column align="center" label="操作" width="220px"> <el-table-column align="center" label="操作" width="220px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-link <el-link

View File

@ -32,7 +32,7 @@
<el-span v-else></el-span> <el-span v-else></el-span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建"> <el-table-column label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.create_by_.username}} {{scope.row.create_by_.username}}
</template> </template>

View File

@ -3,13 +3,12 @@
<el-card> <el-card>
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>基本信息</span> <span>基本信息</span>
<el-button <el-button
style="float: right; padding: 3px 0" style="float: right; padding: 3px 0"
@click="getWordText()" @click="getWordText()"
type="text" type="text"
>查看作业指导书</el-button >查看作业指导书
> </el-button>
</div> </div>
<el-form <el-form
ref="form" ref="form"
@ -23,10 +22,9 @@
disabled="disabled" disabled="disabled"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="操作人">
<el-form-item label="创建人">
<el-input <el-input
v-model="operationData.create_by_.username" v-model="operationData.user"
disabled="disabled" disabled="disabled"
></el-input> ></el-input>
</el-form-item> </el-form-item>
@ -38,12 +36,13 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button
v-if="operationData.is_submited == false"
type="primary" type="primary"
style="float: right" style="float: right"
@click="handlesubmit()" @click="handlesubmit()"
v-if="operationData.is_submited == false"
>提交本次操作</el-button
> >
提交本次操作
</el-button>
</el-form-item> </el-form-item>
<!-- <!--
<el-form-item label="边角料"> <el-form-item label="边角料">
@ -61,7 +60,12 @@
</el-form-item> </el-form-item>
!--> !-->
<el-form-item v-if="operationData.use_scrap"> <el-form-item v-if="operationData.use_scrap">
<el-button type="primary" @click="scrapSubmit()">创建</el-button> <el-button
type="primary"
@click="scrapSubmit()"
>
创建
</el-button>
<el-button>取消</el-button> <el-button>取消</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -119,14 +123,14 @@
<el-table-column align="center" label="操作" width="100px" fixed="right"> <el-table-column align="center" label="操作" width="100px" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-link type="primary" @click="handleupdatewproduct(scope)" <el-link type="primary" @click="handleupdatewproduct(scope)"
>编辑</el-link >编辑
> </el-link>
<el-link <el-link
v-if="checkPermission(['warehouse_update'])" v-if="checkPermission(['warehouse_update'])"
type="danger" type="danger"
@click="handleDeletewproduct(scope)" @click="handleDeletewproduct(scope)"
>删除</el-link >删除
> </el-link>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -148,11 +152,11 @@
</el-form> </el-form>
<div style="text-align: right"> <div style="text-align: right">
<el-button type="danger" @click="dialogwproductplace = false" <el-button type="danger" @click="dialogwproductplace = false"
>取消</el-button >取消
> </el-button>
<el-button type="primary" @click="submitwproductplace" <el-button type="primary" @click="submitwproductplace"
>确认</el-button >确认
> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
@ -211,8 +215,8 @@
v-if="checkPermission(['warehouse_update'])" v-if="checkPermission(['warehouse_update'])"
type="danger" type="danger"
@click="handleDeletequip(scope)" @click="handleDeletequip(scope)"
>删除</el-link >删除
> </el-link>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -248,8 +252,8 @@
v-if="checkPermission(['warehouse_update'])" v-if="checkPermission(['warehouse_update'])"
type="primary" type="primary"
@click="handlerecord(scope)" @click="handlerecord(scope)"
>填写表单</el-link >填写表单
> </el-link>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -357,11 +361,9 @@
</el-form> </el-form>
<span slot="footer"> <span slot="footer">
<el-button type="danger" @click="dialogVisibleForm = false" <el-button type="danger" @click="dialogVisibleForm = false"
>取消</el-button >取消</el-button>
>
<el-button type="primary" @click="recordconfirm()" <el-button type="primary" @click="recordconfirm()"
>提交</el-button >提交</el-button>
>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@ -377,8 +379,8 @@
style="float: right; padding: 3px 0" style="float: right; padding: 3px 0"
type="text" type="text"
@click="cjllclick()" @click="cjllclick()"
>从车间领料</el-button >从车间领料
> </el-button>
</div> </div>
<template> <template>
<el-table <el-table
@ -407,8 +409,8 @@
v-if="checkPermission(['warehouse_update'])" v-if="checkPermission(['warehouse_update'])"
type="danger" type="danger"
@click="handleDeleteinput(scope)" @click="handleDeleteinput(scope)"
>删除</el-link >删除
> </el-link>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -431,17 +433,20 @@
<el-table-column label="子计划编号"> <el-table-column label="子计划编号">
<template slot-scope="scope">{{ <template slot-scope="scope">{{
scope.row.subproduction_plan_.number scope.row.subproduction_plan_.number
}}</template> }}
</template>
</el-table-column> </el-table-column>
<el-table-column label="物料名称"> <el-table-column label="物料名称">
<template slot-scope="scope">{{ <template slot-scope="scope">{{
scope.row.material_.name scope.row.material_.name
}}</template> }}
</template>
</el-table-column> </el-table-column>
<el-table-column label="物料单位"> <el-table-column label="物料单位">
<template slot-scope="scope">{{ <template slot-scope="scope">{{
scope.row.material_.unit scope.row.material_.unit
}}</template> }}
</template>
</el-table-column> </el-table-column>
<el-table-column label="物料批次"> <el-table-column label="物料批次">
<template slot-scope="scope">{{ scope.row.batch }}</template> <template slot-scope="scope">{{ scope.row.batch }}</template>
@ -475,11 +480,11 @@
</el-table> </el-table>
<div style="text-align: right"> <div style="text-align: right">
<el-button type="danger" @click="dialogTablepick = false" <el-button type="danger" @click="dialogTablepick = false"
>取消</el-button >取消
> </el-button>
<el-button type="primary" @click="handlepicks()" <el-button type="primary" @click="handlepicks()"
>提交</el-button >提交
> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
@ -493,8 +498,8 @@
style="float: right; padding: 3px 0" style="float: right; padding: 3px 0"
type="text" type="text"
@click="dialogTableoutput = true" @click="dialogTableoutput = true"
>选择产出</el-button >选择产出
> </el-button>
</div> </div>
<el-table <el-table
:data="outputData" :data="outputData"
@ -537,26 +542,28 @@
<el-table-column label="子计划编号"> <el-table-column label="子计划编号">
<template slot-scope="scope">{{ <template slot-scope="scope">{{
scope.row.subproduction_plan_.number scope.row.subproduction_plan_.number
}}</template> }}
</template>
</el-table-column> </el-table-column>
<el-table-column label="物料名称"> <el-table-column label="物料名称">
<template slot-scope="scope">{{ <template slot-scope="scope">{{
scope.row.material_.name scope.row.material_.name
}}</template> }}
</template>
</el-table-column> </el-table-column>
<el-table-column label="物料单位"> <el-table-column label="物料单位">
<template slot-scope="scope">{{ <template slot-scope="scope">{{
scope.row.material_.unit scope.row.material_.unit
}}</template> }}
</template>
</el-table-column> </el-table-column>
<el-table-column label="计划/产出/合格"> <el-table-column label="计划/产出/合格">
<template slot-scope="scope" <template slot-scope="scope"
>{{ scope.row.count }}/{{ scope.row.count_real }}/{{ >{{ scope.row.count }}/{{ scope.row.count_real }}/{{
scope.row.count_ok scope.row.count_ok
}}</template }}
> </template>
</el-table-column> </el-table-column>
<el-table-column label="本操作产出数量" width="140px"> <el-table-column label="本操作产出数量" width="140px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-form :model="scope.row" widht="100px"> <el-form :model="scope.row" widht="100px">
@ -592,11 +599,11 @@
</el-table> </el-table>
<div style="text-align: right"> <div style="text-align: right">
<el-button type="danger" @click="dialogTableoutput = false" <el-button type="danger" @click="dialogTableoutput = false"
>取消</el-button >取消
> </el-button>
<el-button type="primary" @click="handleoutputs()" <el-button type="primary" @click="handleoutputs()"
>提交</el-button >提交
> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</el-card> </el-card>
@ -606,7 +613,6 @@
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>工具工装</span> <span>工具工装</span>
</div> </div>
<el-table <el-table
:data="tool" :data="tool"
border border
@ -624,12 +630,25 @@
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
<el-dialog :visible.sync="limitedPhoto" @close="closeCamera" id="loginFaceWrap">
<div style="font-size: 28px;color: #333333;text-align: center;font-weight: bold;">审核人员确认</div>
<div class="testTracking">
<faceLogin
v-if="limitedPhoto"
ref="faceTracking"
name="faceLogin"
@func="getMsgFormSon"
@close="closeDialog"
></faceLogin>
</div>
</el-dialog>
</div> </div>
</template> </template>
<style scoped> <style scoped>
.word-wrap { .word-wrap {
padding: 25px; padding: 25px;
} }
.box-card { .box-card {
height: 300px; height: 300px;
} }
@ -663,9 +682,10 @@ import { getrffieldList, gettechdocList } from "@/api/mtm";
import checkPermission from "@/utils/permission"; import checkPermission from "@/utils/permission";
import {getprogressList} from "@/api/pm"; import {getprogressList} from "@/api/pm";
import Pagination from "@/components/Pagination"; // secondary package based on el-pagination import Pagination from "@/components/Pagination"; // secondary package based on el-pagination
import faceLogin from '@/components/faceLogin/review.vue';
export default { export default {
components: { Pagination }, components: {Pagination, faceLogin},
inject: ["reload"], inject: ["reload"],
data() { data() {
return { return {
@ -693,7 +713,9 @@ export default {
page_size: 20, page_size: 20,
}, },
wproductplace: {}, wproductplace: {},
operationData: "", operationData: {
user: "",
},
scrapData: {}, scrapData: {},
dialogVisibleForm: false, dialogVisibleForm: false,
tableForm: { tableForm: {
@ -711,10 +733,6 @@ export default {
count: 0, count: 0,
name: "", name: "",
}, },
listQueryfield: {
page: 1,
page_size: 20,
},
highoptions: [ highoptions: [
{value: 1, label: "<"}, {value: 1, label: "<"},
{value: 2, label: "<="}, {value: 2, label: "<="},
@ -775,6 +793,7 @@ export default {
}, },
], ],
formID: "", formID: "",
limitedPhoto: false,
dialogTablepick: false, dialogTablepick: false,
dialogTableoutput: false, dialogTableoutput: false,
picks: {}, picks: {},
@ -872,6 +891,11 @@ export default {
getoperation(this.id).then((response) => { getoperation(this.id).then((response) => {
if (response.data) { if (response.data) {
this.operationData = response.data; this.operationData = response.data;
if (response.data.is_submited) {
this.operationData.user = response.data.create_by_.name;
} else {
this.operationData.user = '';
}
} }
}); });
}, },
@ -1144,10 +1168,8 @@ export default {
//提交本次操作 //提交本次操作
handlesubmit() { handlesubmit() {
this.limitedPhoto = true;
/* if (this.inputData == "") {
if(this.inputData=="")
{
this.$confirm("没有消耗物料确定提交吗?", "提示", { this.$confirm("没有消耗物料确定提交吗?", "提示", {
confirmButtonText: "确认", confirmButtonText: "确认",
cancelButtonText: "取消", cancelButtonText: "取消",
@ -1161,17 +1183,73 @@ export default {
.catch((err) => { .catch((err) => {
console.error(err); console.error(err);
}); });
} } else {
else{
submitOperation(this.id).then((res) => { submitOperation(this.id).then((res) => {
if (res.code >= 200) { if (res.code >= 200) {
this.$router.push({name: "operation"}); this.$router.push({name: "operation"});
this.$message.success("操作提交成功!"); this.$message.success("操作提交成功!");
} }
}); });
} }*/
}, },
/*关闭相机*/
closeCamera() {
this.$refs.faceTracking.closeCamera();
let video = document.getElementById('video');
let stream = video.srcObject;
// console.log(stream);
let tracks = stream.getTracks();
tracks.forEach(track => {
track.stop()
});
video.srcObject = null;
},
//获取人脸数据
getMsgFormSon(data) {
let that = this;
that.operationData.user = data.name;
if (data.token !== '' && data.token !== null && data.token !== undefined) {
if (that.inputData == "") {
that.$confirm("没有消耗物料确定提交吗?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "error",
})
.then( () => {
submitOperation(that.id,{token:data.token}).then(res=>{
if(res.code===200){
that.$router.push({name: "operation"});
that.$message.success("操作提交成功!");
}else{
that.$message.error(res.msg)
}
});
}).catch((err) => {
that.$message.error(err);
});
} else {
submitOperation(that.id,{token:data.token}).then((res) => {
if (res.code === 200) {
that.$router.push({name: "operation"});
that.$message.success("操作提交成功!");
}else{
that.$message.error(res.msg)
}
}).catch((err) => {
that.$message.error(err);
});
}
}
},
closeDialog(){
this.limitedPhoto = false;
},
//点击人脸验证
directorConfirm() {
this.limitedPhoto = true;
},
}, },
}; };
</script> </script>

View File

@ -26,6 +26,11 @@
{{ actstate_[scope.row.act_state] }} {{ actstate_[scope.row.act_state] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="检验员">
<!--<template slot-scope="scope">-->
<!--{{ actstate_[scope.row.act_state] }}-->
<!--</template>-->
</el-table-column>
<el-table-column label="所在子工序"> <el-table-column label="所在子工序">
<template slot-scope="scope">{{ scope.row.step_.name }}</template> <template slot-scope="scope">{{ scope.row.step_.name }}</template>
</el-table-column> </el-table-column>