Browse Source

2024.8.20 一、产品文档收集优化

二、审批管理第一版
java8
yuejiayang 1 year ago
parent
commit
849bd32511
  1. 19
      src/api/auth/auth.js
  2. 4
      src/api/eam/eamProofing.js
  3. 135
      src/views/modules/auth/authBusiness.vue
  4. 898
      src/views/modules/auth/authGroup.vue
  5. 52
      src/views/modules/auth/authRule.vue
  6. 226
      src/views/modules/eam/com_project_proof_record.vue
  7. 4
      src/views/modules/eam/dashBoard.vue
  8. 184
      src/views/modules/eam/eamProjectInfo.vue
  9. 23
      src/views/modules/eam/eamProjectInfoForConfirm.vue
  10. 91
      src/views/modules/eam/eamProjectInfoForUploads.vue
  11. 171
      src/views/modules/eam/eamProjectPartInfo.vue

19
src/api/auth/auth.js

@ -0,0 +1,19 @@
import { createAPI } from "@/utils/httpRequest.js";
export const authBusinessSearch = data => createAPI(`auth/authBusinessSearch`,'post',data)
export const authGroupSearch = data => createAPI(`auth/authGroupSearch`,'post',data)
export const authGroupSave = data => createAPI(`auth/authGroupSave`,'post',data)
export const authGroupDelete = data => createAPI(`auth/authGroupDelete`,'post',data)
export const authGroupEdit = data => createAPI(`auth/authGroupEdit`,'post',data)
export const authGroupBusinessSearch = data => createAPI(`auth/authGroupBusinessSearch`,'post',data)
export const getAuthGroupBusinessList = data => createAPI(`auth/getAuthGroupBusinessList`,'post',data)
export const addAuthGroupMemberBusiness = data => createAPI(`auth/addAuthGroupMemberBusiness`,'post',data)
export const deleteAuthGroupMemberBusiness = data => createAPI(`auth/deleteAuthGroupMemberBusiness`,'post',data)

4
src/api/eam/eamProofing.js

@ -37,6 +37,10 @@ export const searchProjectUploadsDocumentList= data => createAPI(`/plm/proofingI
export const searchProjectOverUploadsDocumentList= data => createAPI(`/plm/proofingInformation/searchProjectOverUploadsDocumentList`,'post',data)
export const searchAllProjectUploadsDocumentList= data => createAPI(`/plm/proofingInformation/searchAllProjectUploadsDocumentList`,'post',data)
export const searchConfirmProgressList= data => createAPI(`/plm/proofingInformation/searchConfirmProgressList`,'post',data)
export const searchAllConfirmProgressList= data => createAPI(`/plm/proofingInformation/searchAllConfirmProgressList`,'post',data)
export const searchOverConfirmProgressList= data => createAPI(`/plm/proofingInformation/searchOverConfirmProgressList`,'post',data)

135
src/views/modules/auth/authBusiness.vue

@ -0,0 +1,135 @@
<template>
<div class="mod-config">
<div>
<span @click="favoriteFunction()">
<icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg"></icon-svg>
</span>
</div>
<el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
<el-form-item label="用户ID">
<el-input v-model="searchData.userDisplay" placeholder="请输入用户名称"></el-input>
</el-form-item>
<el-form-item label="用户名">
<el-input v-model="searchData.username" placeholder="请输入用户名"></el-input>
</el-form-item>
<el-form-item :label="' '">
<el-button type="primary" @click="getDataList()">查询</el-button>
</el-form-item>
</el-form>
<el-table
:data="dataList"
:height="height"
border
style="width: 100%;">
<el-table-column prop="userDisplay" label="用户名称" headerAlign="center" align="left"></el-table-column>
<el-table-column prop="username" label="用户名" headerAlign="center" align="left"></el-table-column>
<el-table-column prop="email" label="邮箱" headerAlign="center" align="left"></el-table-column>
<el-table-column prop="phone" label="手机号" headerAlign="center" align="center"></el-table-column>
</el-table>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 50, 100, 200, 500]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</div>
</template>
<script>
import {removeUserFavorite, saveUserFavorite} from "@/api/userFavorite";
import {authBusinessSearch} from "@/api/auth/auth";
export default {
data() {
return {
//
favorite: false,
searchData: {
site: this.$store.state.user.site,
userName: this.$store.state.user.name,
userDisplay: '',
username: '',
page: 1,
limit: 10,
},
height: 200,
pageIndex: 1,
pageSize: 20,
totalPage: 0,
dataList: [],
};
},
mounted () {
this.$nextTick(() => {
this.height = window.innerHeight - 210
})
},
created () {
//
// this.getButtonAuthData()
// site bu
// this.getSiteAndBuByUserName()
//
// this.favoriteIsOk()
//
// this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
//
this.getDataList()
},
methods: {
//
getDataList () {
this.searchData.limit = this.pageSize
this.searchData.page = this.pageIndex
authBusinessSearch(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.page.list
this.pageIndex = data.page.currPage
this.pageSize = data.page.pageSize
this.totalPage = data.page.totalCount
}
})
},
//
sizeChangeHandle (val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
},
// OR
favoriteFunction () {
let userFavorite = {
userId: this.$store.state.user.id,
functionId: this.$route.meta.menuId,
}
if (this.favorite) {
removeUserFavorite(userFavorite).then(({data}) => {
this.$message.success(data.msg)
this.favorite = false
})
} else {
//
saveUserFavorite(userFavorite).then(({data}) => {
this.$message.success(data.msg)
this.favorite = true
})
}
},
},
};
</script>

898
src/views/modules/auth/authGroup.vue

@ -0,0 +1,898 @@
<template>
<div class="mod-config">
<el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList">
<el-form-item :label="'BU'">
<el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 130px">
<el-option
v-for = "i in userBuList"
:key = "i.buNo"
:label = "i.buDesc"
:value = "i.buDesc">
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="'审批组编码'">
<el-input v-model="searchData.groupNo" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item :label="'审批组名称'">
<el-input v-model="searchData.groupDesc" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item :label="'状态'">
<el-select clearable v-model="searchData.active" style="width: 120px">
<el-option label="启用" value="Y"></el-option>
<el-option label="禁用" value="N"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="' '">
<el-button @click="getDataList">查询</el-button>
<el-button type="primary" @click="addModal">新增</el-button>
</el-form-item>
</el-form>
<el-table
:height="height"
:data="dataList"
border
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnList" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed==''?false:item.fixed"
:min-width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="160"
label="操作">
<template slot-scope="scope">
<el-link style="cursor: pointer" @click="updateModal(scope.row)">修改</el-link>
<el-link style="cursor: pointer" @click="delModal(scope.row)">删除</el-link>
<el-link style="cursor: pointer" @click="updateGroupBusinessModal(scope.row)">组成员</el-link>
</template>
</el-table-column>
</el-table>
<!-- 分页栏 -->
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 50, 100, 200, 500]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<el-dialog :title="modalData.title" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="495px">
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="审批组编码" prop="groupNo" :rules="rules.groupNo">
<el-input v-model="modalData.groupNo" :disabled="modalDisableFlag" style="width: 110px"></el-input>
</el-form-item>
<el-form-item label="审批组名称" prop="groupDesc" :rules="rules.groupDesc">
<el-input v-model="modalData.groupDesc" :disabled="modalDisableFlag" style="width: 210px"></el-input>
</el-form-item>
<el-form-item label="BU" prop="bu" :rules="rules.bu">
<el-select v-model="modalData.bu" placeholder="请选择" :disabled="modalDisableFlag" style="width: 110px">
<el-option
v-for = "i in userBuList"
:key = "i.buNo"
:label = "i.buDesc"
:value = "i.buNo">
<span style="float: left;width: 100px">{{ i.sitename }}</span>
<span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
{{ i.buDesc }}
</span>
</el-option>
</el-select>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="状态" prop="active" :rules="rules.active">
<el-select v-model="modalData.active" style="width: 110px">
<el-option label="启用" value="Y"></el-option>
<el-option label="禁用" value="N"></el-option>
</el-select>
</el-form-item>
<el-form-item label="邮箱" prop="groupEmailAddress" :rules="rules.groupEmailAddress">
<el-input v-model="modalData.groupEmailAddress" style="width: 210px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="备注">
<el-input type="textarea" v-model="modalData.remark" style="width: 458px"></el-input>
</el-form-item>
</el-form>
<el-footer style="height:30px;margin-top: 28px;text-align:center">
<el-button type="primary" @click="saveData">保存</el-button>
<el-button type="primary" @click="modalFlag = false">关闭</el-button>
</el-footer>
</el-dialog>
<!-- 新增用户角色 -->
<el-dialog title="审批组操作" :close-on-click-modal="false" v-drag :visible.sync="authGroupMemberSaveDialog" width="900px">
<div style="font-size: 12px">
<el-form :inline="true" label-position="top" :model="searchAuthBusinessData">
<el-form-item :label="'用户名'">
<el-input v-model="searchAuthBusinessData.username" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item :label="'用户名称'">
<el-input v-model="searchAuthBusinessData.userDisplay" clearable style="width: 200px"></el-input>
</el-form-item>
<el-form-item :label="' '">
<el-button type="primary" @click="authGroupBusinessSearch()">查询</el-button>
</el-form-item>
</el-form>
</div>
<el-container style="margin-top: 0px;">
<el-main style="width: 400px; padding: 1px">
<span style="font-size: 12px" >可选审批人</span>
<el-table
height="400px"
:data="allAuthBusinessList"
border
ref="allAuthBusinessTable"
@row-click="allAuthBusinessClickRow"
@selection-change="selectionAllAuthBusiness"
highlight-current-row
style="width: 100%">
<el-table-column
type="selection"
header-align="center"
align="center"
:selectable="selectFlag"
width="50">
</el-table-column>
<el-table-column
prop="username"
header-align="center"
align="center"
min-width="80"
label="用户名">
</el-table-column>
<el-table-column
prop="userDisplay"
header-align="center"
align="center"
min-width="120"
label="用户名称">
</el-table-column>
</el-table>
</el-main>
<el-main style="width: 111px;padding: 1px">
<div style="margin-top: 182px;margin-left: 18px">
<el-button type="primary" @click="addAuthGroupMemberBusiness()">添加>></el-button>
</div>
<div style="margin-top: 15px;margin-left: 18px">
<el-button type="primary" @click="deleteAuthGroupMemberBusiness()">删除<<</el-button>
</div>
</el-main>
<el-main style="width: 400px;padding: 1px">
<span style="font-size: 12px" >已有审批人</span>
<el-table
height="400px"
:data="isAuthBusinessList"
border
ref="isAuthBusinessTable"
@row-click="isAuthBusinessClickRow"
@selection-change="selectionIsAuthBusiness"
highlight-current-row
style="width: 100%">
<el-table-column
type="selection"
header-align="center"
align="center"
:selectable="selectFlag"
width="50">
</el-table-column>
<el-table-column
prop="username"
header-align="center"
align="center"
min-width="80"
label="用户名">
</el-table-column>
<el-table-column
prop="userDisplay"
header-align="center"
align="center"
min-width="120"
label="用户名称">
</el-table-column>
</el-table>
</el-main>
</el-container>
<el-footer style="height:40px;margin-top: 20px;text-align:center">
<el-button type="primary" @click="authGroupMemberSaveDialog = false">关闭</el-button>
</el-footer>
</el-dialog>
</div>
</template>
<script>
import {
authGroupSearch, //
authGroupSave, //
authGroupEdit, //
authGroupDelete //
} from '@/api/auth/auth'
import {getSiteAndBuByUserName} from "@/api/eam/eam.js"
import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js"
import Chooselist from '@/views/modules/common/Chooselist_eam'
import TransferTable from "../common/transferTable.vue";
import {
addAuthGroupMemberBusiness,
authBusinessSearch,
authGroupBusinessSearch, deleteAuthGroupMemberBusiness,
getAuthGroupBusinessList
} from "../../../api/auth/auth";
export default {
components: {
TransferTable,
Chooselist
},
watch: {
searchData: {
deep: true,
handler: function (newV, oldV) {
this.searchData.groupNo = this.searchData.groupNo.toUpperCase()
}
},
modalData: {
deep: true,
handler: function (newV, oldV) {
this.modalData.groupNo = this.modalData.groupNo.toUpperCase()
}
}
},
data () {
return {
//
resultList: [],
userBuList: [],
// ======== ========
height: 200,
// ======== ========
pageIndex: 1,
pageSize: 50,
totalPage: 0,
authGroupMemberSaveDialog: false,
searchAuthBusinessData:{
site: this.$store.state.user.site,
userName: this.$store.state.user.name,
username:'',
userDisplay:'',
},
authBusinessList:[],
isAuthBusinessList:[],
allAuthBusinessList:[],
allAuthBusinessSelections:[],
isAuthBusinessSelections:[],
rowData:{},
//
searchData: {
site: this.$store.state.user.site,
userName: this.$store.state.user.name,
buDesc: '',
groupNo: '',
groupDesc: '',
active: '',
page: 1,
limit: 10
},
modalData: {
flag: '',
title: '',
bu: '',
site: this.$store.state.user.site,
userName: this.$store.state.user.name,
buNo: '',
recordType: '',
authGroupId: '',
groupNo: '',
groupDesc: '',
groupEmailAddress: '',
remark: '',
active: '',
createBy: '',
updateBy: '',
createDate: '',
updateDate: ''
},
// ======== ========
dataList: [],
//
columnList: [
{
userId: this.$store.state.user.name,
functionId: 601005,
serialNumber: '601005Table1BU',
tableId: "601005Table1",
tableName: "审批组信息表",
columnProp: 'buDesc',
headerAlign: "center",
align: "left",
columnLabel: 'BU',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 601005,
serialNumber: '601005Table1GroupNo',
tableId: "601005Table1",
tableName: "审批组信息表",
columnProp: 'groupNo',
headerAlign: "center",
align: "center",
columnLabel: '审批组编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 601005,
serialNumber: '601005Table1GroupDesc',
tableId: "601005Table1",
tableName: "审批组表",
columnProp: 'groupDesc',
headerAlign: "center",
align: "left",
columnLabel: '审批组名称',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 300
},
{
userId: this.$store.state.user.name,
functionId: 601005,
serialNumber: '601005Table1GroupEmailAddress',
tableId: "601005Table1",
tableName: "审批组表",
columnProp: 'groupEmailAddress',
headerAlign: "center",
align: "left",
columnLabel: '邮箱',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 300
},
{
functionId: 601005,
serialNumber: '601005Table1Active',
tableId: '601005Table1',
tableName: '审批组信息表',
columnProp: 'active',
headerAlign: 'center',
align: 'center',
columnLabel: '状态',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 601005,
serialNumber: '601005Table1Remark',
tableId: "601005Table1",
tableName: "审批组表",
columnProp: 'remark',
headerAlign: "center",
align: "left",
columnLabel: '备注',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 300
},
{
userId: this.$store.state.user.name,
functionId: 601005,
serialNumber: '601005Table1CreateDate',
tableId: '601005Table1',
tableName: '审批组表',
columnProp: 'createDate',
headerAlign: 'center',
align: 'center',
columnLabel: '创建时间',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 170
},
{
userId: this.$store.state.user.name,
functionId: 601005,
serialNumber: '601005Table1CreateBy',
tableId: "601005Table1",
tableName: "审批组表",
columnProp: 'createBy',
headerAlign: "center",
align: "center",
columnLabel: '创建人',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
{
userId: this.$store.state.user.name,
functionId: 601005,
serialNumber: '601005Table1UpdateDate',
tableId: "601005Table1",
tableName: "审批组表",
columnProp: 'updateDate',
headerAlign: "center",
align: "center",
columnLabel: '更新时间',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 170
},
{
userId: this.$store.state.user.name,
functionId: 601005,
serialNumber: '601005Table1UpdateBy',
tableId: "601005Table1",
tableName: "审批组表",
columnProp: 'updateBy',
headerAlign: "center",
align: "center",
columnLabel: '更新人',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100
},
],
rules: {
bu: [
{
required: true,
message: ' ',
trigger: ['blur','change']
}
],
groupNo:[
{
required: true,
message: ' ',
trigger: 'change'
}
],
groupDesc:[
{
required: true,
message: ' ',
trigger: 'change'
}
],
active:[
{
required: true,
message: ' ',
trigger: 'change'
}
],
groupEmailAddress:[
{
required: true,
message: ' ',
trigger: 'change'
}
]
},
// ======== ========
authSearch: false,
authSave: false,
authUpdate: false,
authDelete: false,
modalFlag: false,
modalDisableFlag: false,
menuId: this.$route.meta.menuId,
}
},
mounted () {
this.$nextTick(() => {
this.height = window.innerHeight - 180
})
},
created () {
//
this.getButtonAuthData()
// site bu
this.getSiteAndBuByUserName()
//
// this.favoriteIsOk()
//
this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
//
this.getDataList()
},
methods: {
// bu
getSiteAndBuByUserName () {
let tempData = {
username: this.$store.state.user.name,
}
getSiteAndBuByUserName(tempData).then(({data}) => {
if (data.code === 0) {
this.userBuList = data.rows
}
})
},
//
sizeChangeHandle (val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
},
//
getDataList () {
this.searchData.limit = this.pageSize
this.searchData.page = this.pageIndex
authGroupSearch(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.page.list
this.pageIndex = data.page.currPage
this.pageSize = data.page.pageSize
this.totalPage = data.page.totalCount
}
})
},
addModal () {
this.modalData = {
flag: '1',
title: '审批组新增',
bu: this.userBuList[0].buNo,
buNo: '',
groupNo: '',
groupDesc: '',
active: 'Y',
createBy: this.$store.state.user.name,
}
this.modalDisableFlag = false
this.modalFlag = true
},
/**
* 审批组信息编辑模态框
* @param row
*/
updateModal (row) {
this.modalData = {
flag: '2',
title: '审批组编辑',
site: row.site,
authGroupId: row.authGroupId,
recordType: row.recordType,
bu: row.site + '_' + row.buNo,
buNo: row.buNo,
groupNo: row.groupNo,
groupDesc: row.groupDesc,
groupEmailAddress: row.groupEmailAddress,
remark: row.remark,
active: row.active,
createBy: row.createBy,
createDate: row.createDate,
updateBy: this.$store.state.user.name,
updateDate: ''
}
this.modalDisableFlag = true
this.modalFlag = true
},
// ======== // ========
/**
* 审批组信息新增/编辑
*/
saveData () {
if (this.modalData.bu === '' || this.modalData.bu == null) {
this.$message.warning('请选择BU!')
return
}
if (this.modalData.groupNo === '' || this.modalData.groupNo == null) {
this.$message.warning('请填写审批组编码!')
return
}
if (this.modalData.groupDesc === '' || this.modalData.groupDesc == null) {
this.$message.warning('请填写审批组名称!')
return
}
if (this.modalData.active === '' || this.modalData.active == null) {
this.$message.warning('请选择状态!')
return
}
if (this.modalData.groupEmailAddress === '' || this.modalData.groupEmailAddress == null) {
this.$message.warning('请填写邮箱!')
return
}
if (this.modalData.flag === '1') {
this.modalData.buNo = this.modalData.bu.split('_')[1]
this.modalData.site = this.$store.state.user.site
authGroupSave(this.modalData).then(({data}) => {
if (data && data.code === 0) {
this.getDataList()
this.modalFlag = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
} else {
let inData = {
authGroupId: this.modalData.authGroupId,
recordType: this.modalData.recordType,
bu: this.modalData.bu,
groupNo: this.modalData.groupNo,
groupDesc: this.modalData.groupDesc,
groupEmailAddress: this.modalData.groupEmailAddress,
remark: this.modalData.remark,
active: this.modalData.active,
createBy: this.modalData.createBy,
updateBy: this.$store.state.user.name,
}
authGroupEdit(this.modalData).then(({data}) => {
if (data && data.code === 0) {
this.getDataList()
this.modalFlag = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
}
},
/**
* 审批组信息删除
*/
delModal (row) {
this.$confirm(`是否删除这条审批组信息?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
authGroupDelete(row).then(({data}) => {
if (data && data.code === 0) {
this.getDataList()
this.partSelections = []
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
}).catch(() => {
})
},
updateGroupBusinessModal (row) {
this.rowData = JSON.parse(JSON.stringify(row))
this.searchAuthBusinessData = {
site: '',
userDisplay: '',
active: '',
username: ''
}
this.allAuthBusinessSelections = null
this.isAuthBusinessSelections = null
getAuthGroupBusinessList(row).then(({data}) => {
this.allAuthBusinessList = data.row1
this.isAuthBusinessList = data.row2
})
this.authGroupMemberSaveDialog = true
},
/**
* 查询可用角色
*/
authGroupBusinessSearch () {
authGroupBusinessSearch(this.rowData).then(({data}) => {
if (data.code === 0) {
this.allAuthBusinessList = data.rows
}
})
},
//
allAuthBusinessClickRow (row) {
this.$refs.allAuthBusinessTable.toggleRowSelection(row)
},
//
isAuthBusinessClickRow (row) {
this.$refs.isAuthBusinessTable.toggleRowSelection(row)
},
selectionAllAuthBusiness (val) {
this.allAuthBusinessSelections = val
},
selectionIsAuthBusiness (val) {
this.isAuthBusinessSelections = val
},
//
addAuthGroupMemberBusiness () {
if (this.allAuthBusinessSelections == null || this.allAuthBusinessSelections.length === 0) {
this.$message.warning('请选择可选角色!')
return
}
this.rowData.authBusinessList = this.allAuthBusinessSelections
this.rowData.createBy = this.$store.state.user.name
addAuthGroupMemberBusiness(this.rowData).then(({data}) => {
if (data && data.code === 0) {
getAuthGroupBusinessList(this.rowData).then(({data}) => {
this.allAuthBusinessList = data.row1
this.isAuthBusinessList = data.row2
})
this.allAuthBusinessSelections = []
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
},
//
deleteAuthGroupMemberBusiness () {
if (this.isAuthBusinessSelections == null || this.isAuthBusinessSelections.length === 0) {
this.$message.warning('请选择已有角色!')
return
}
this.rowData.authBusinessList = this.isAuthBusinessSelections
deleteAuthGroupMemberBusiness(this.rowData).then(({data}) => {
if (data && data.code === 0) {
getAuthGroupBusinessList(this.rowData).then(({data}) => {
this.allAuthBusinessList = data.row1
this.isAuthBusinessList = data.row2
})
this.isAuthBusinessSelections = []
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
},
selectFlag () {
return true
},
//
async getTableUserColumn(tableId, columnId) {
let queryTableUser = {
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
tableId: tableId,
status: true,
languageCode: this.$i18n.locale
}
await getTableUserListLanguage(queryTableUser).then(({data}) => {
if (data.rows.length > 0) {
switch (columnId) {
case 1:
this.columnList = data.rows
break;
}
} else {
this.getColumnList(tableId, columnId)
}
})
},
// tableDefault
async getColumnList (tableId, columnId) {
let queryTable= {
functionId: this.$route.meta.menuId,
tableId: tableId,
languageCode: this.$i18n.locale
}
await getTableDefaultListLanguage(queryTable).then(({data}) => {
if (!data.rows.length === 0) {
switch (columnId) {
case 1:
this.columnList = data.rows
break;
}
}
})
},
//
getButtonAuthData () {
let searchFlag = this.isAuth(this.menuId+":search")
let saveFlag = this.isAuth(this.menuId+":save")
let updateFlag = this.isAuth(this.menuId+":update")
let deleteFlag = this.isAuth(this.menuId+":delete")
//
this.authSearch = !searchFlag
this.authSave = !saveFlag
this.authUpdate = !updateFlag
this.authDelete = !deleteFlag
},
}
}
</script>
<style scoped lang="scss">
/deep/ .customer-tab .el-tabs__content {
padding: 0px !important;
height: 459px;
}
</style>

52
src/views/modules/auth/authRule.vue

@ -0,0 +1,52 @@
<template>
<div>
<el-form :inline="true" :model="searchData" class="demo-form-inline">
<el-form-item label="用户ID">
<el-input v-model="searchData.userId" placeholder="请输入用户ID"></el-input>
</el-form-item>
<el-form-item label="用户名">
<el-input v-model="searchData.username" placeholder="请输入用户名"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch">查询</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="userId" label="用户ID" width="180"></el-table-column>
<el-table-column prop="username" label="用户名" width="180"></el-table-column>
<el-table-column prop="email" label="邮箱" width="200"></el-table-column>
<el-table-column prop="phone" label="手机号" width="180"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
searchData: {
userId: '',
username: '',
},
tableData: [],
};
},
methods: {
handleSearch() {
//
this.fetchData();
},
fetchData() {
const params = {
userId: this.searchData.userId,
username: this.searchData.username,
};
this.$http.get('/api/users', { params })
.then(response => {
this.tableData = response.data;
});
},
},
};
</script>

226
src/views/modules/eam/com_project_proof_record.vue

@ -63,13 +63,14 @@
<el-table-column
header-align="center"
align="center"
width="130"
width="140"
fixed="left"
label="操作">
<template slot-scope="scope">
<a type="primary" size="small" v-if="scope.row.documentDefinitionListId !== '-1'" @click="uploadFile(scope.row)">上传文件</a>
<a type="text" size="small" v-if="scope.row.documentDefinitionListId !== '-1' && scope.row.documentId === null" @click="warnSendMail(scope.row)">提醒</a>
<a type="text" size="small" v-if="scope.row.documentId !== null" @click="proofDocumentDelete(scope.row)">删除</a>
<a type="text" size="small" v-if="scope.row.documentId !== null" @click="viewDocumentFile(scope.row)">查看附件</a>
</template>
</el-table-column>
<el-table-column label="序号" type="index" align="center" :index="indexMethod"></el-table-column>
@ -406,6 +407,49 @@
</el-footer>
</el-dialog>
<el-dialog title="查看附件" @close="closeViewDocumentFileVisible" :visible.sync="viewDocumentFileVisible" width="770px" style="margin-top: 0vh" :close-on-click-modal="false">
<el-table
:height="height + 200"
:data="partProofingDocumentFileList"
border
style="width: 100%;margin-top: 0px;margin-left: 0px;">
<el-table-column
prop="fileName"
header-align="center"
align="left"
min-width="250"
label="文件名">
</el-table-column>
<el-table-column
prop="createDate"
header-align="center"
align="center"
min-width="80"
label="上传时间">
</el-table-column>
<el-table-column
prop="createdBy"
header-align="center"
align="center"
min-width="50"
label="上传人">
</el-table-column>
<el-table-column
header-align="center"
align="center"
width="100"
label="操作">
<template slot-scope="scope">
<a type="text" size="small" @click="viewFile(scope.row)">查看</a>
<a type="text" size="small" @click="downloadFile(scope.row)">下载</a>
</template>
</el-table-column>
</el-table>
<div slot="footer" class="dialog-footer" style="margin-top: 0px">
<el-button @click="closeViewDocumentFileVisible()">关闭</el-button>
</div>
</el-dialog>
<upload-file-list-1 folder="projectPPDocumentFiles" title="打样文档附件上传" :file-list.sync="fileList" :label="'文档类型ID:'" :no="documentClickRow.documentTypeId" :no-type="documentClickRow.documentType"
:proofing-id="proofDocumenCurrentRow.proofingId" :proofing-no="proofDocumenCurrentRow.proofingNo" :bu="proofDocumenCurrentRow.buNo" :site="proofDocumenCurrentRow.site" :upload-dialog.sync="uploadDialog" :no-desc="documentClickRow.documentDesc"
:project-id="proofDocumenCurrentRow.projectId" :project-no="proofDocumenCurrentRow.projectNo" :project-desc="proofDocumenCurrentRow.projectDesc" :document-type="proofDocumenCurrentRow.documentType" :id="documentClickRow.id"
@ -431,9 +475,11 @@
import UploadFileList1 from "../common/uploadFileList1.vue";
import he from "element-ui/src/locale/lang/he";
import {deleteProofDocument} from "../../../api/eam/eamProofing";
import {sendMailHandle, warnSendMailHandle} from "../../../api/eam/eamProject";
import {searchProjectConfirmatorFileList, sendMailHandle, warnSendMailHandle} from "../../../api/eam/eamProject";
import moment from 'moment';
import 'moment/locale/zh-cn';
import {downLoadObjectFile} from "../../../api/eam/eam_object_list";
import async from "async";
export default {
computed: {
he() {
@ -486,6 +532,9 @@
proofDocumentList:[],
proofDocumentListDefinition:[],
fileList: [],
viewDocumentFileVisible: false,
partProofingDocumentFileList: [],
roleDescList: [],
documentNo: '', // ID
documentNoType: '',//
//
@ -864,7 +913,24 @@
fixed: '',
columnWidth: 70,
},
{
userId: this.$store.state.user.name,
functionId: 101001014,
serialNumber: '101001014Table1ProjectLeader',
tableId: "101001014Table1",
tableName: "打样文档表",
columnProp: 'projectLeader',
headerAlign: "center",
align: "center",
columnLabel: '文档负责人',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 70,
},
{
userId: this.$store.state.user.name,
functionId: 101001014,
@ -1102,7 +1168,15 @@
proofingInformationSave(this.modalData).then(({data}) => {
//
if (data && data.code === 0) {
this.newProofingDocument(data.proofingId)
this.newProofingDocument(data.proofingId).then(() => {
this.modalData.roleDescList = this.roleDescList
this.modalData.projectManager = this.searchData.projectManager
this.modalData.projectOwner = this.searchData.projectOwner
this.modalData.engineer = this.searchData.engineer
this.modalData.cQualityEngineer1 = this.searchData.cQualityEngineer1
this.modalData.cQualityEngineer2 = this.searchData.cQualityEngineer2
this.modalData.cQualityEngineer3 = this.searchData.cQualityEngineer3
this.modalData.cManufactureEngineer = this.searchData.cManufactureEngineer
this.sendMailHandle(this.modalData)
this.$message({
message: '新增成功',
@ -1112,6 +1186,7 @@
//
this.getProofingInformation()
this.refreshCurrentTabTable()
})
} else {
this.$message({
message: '新增失败:数据库已存在该打样单号',
@ -1174,6 +1249,21 @@
if (this.proofDocumentList[i].documentTypeId !== 'N/A') {
this.proofDocumentListDefinition.push(this.proofDocumentList[i])
}
if (this.proofDocumentList[i].responsibleDepartment === 'PM/Sales'){
this.proofDocumentList[i].projectLeader = this.searchData.projectManager.split("-")[1]
} else if(this.proofDocumentList[i].responsibleDepartment === 'PjM'){
this.proofDocumentList[i].projectLeader = this.searchData.projectOwner.split("-")[1]
} else if(this.proofDocumentList[i].responsibleDepartment === 'Engineer'){
this.proofDocumentList[i].projectLeader = this.searchData.engineer.split("-")[1]
} else if(this.proofDocumentList[i].responsibleDepartment === 'IPQC-Lam/Pri/Etch/Slit'){
this.proofDocumentList[i].projectLeader = this.searchData.cQualityEngineer1.split("-")[1]
} else if(this.proofDocumentList[i].responsibleDepartment === 'IPQC-Converting'){
this.proofDocumentList[i].projectLeader = this.searchData.cQualityEngineer2.split("-")[1]
} else if(this.proofDocumentList[i].responsibleDepartment === 'FQC'){
this.proofDocumentList[i].projectLeader = this.searchData.cQualityEngineer3.split("-")[1]
} else if(this.proofDocumentList[i].responsibleDepartment === 'MFQ'){
this.proofDocumentList[i].projectLeader = this.searchData.cManufactureEngineer.split("-")[1]
}
}
if (this.totalPage > 0) {
//
@ -1543,14 +1633,13 @@
},
newProofingDocument(proofingId) {
this.modalData.proofingId = proofingId
proofingDocumentSave(this.modalData).then(({data}) => {
//
return proofingDocumentSave(this.modalData).then(({ data }) => {
if (data && data.code === 0) {
this.documentListVisible = false
//
this.refreshCurrentTabTable()
this.roleDescList = data.roleDescList;
this.documentListVisible = false;
this.refreshCurrentTabTable();
}
})
});
},
deleteDocumentType(row) {
this.$confirm('是否删除该文档清单?', '提示', {
@ -1701,9 +1790,15 @@
}
})
},
closeViewDocumentFileVisible(){
this.viewDocumentFileVisible = false;
this.partProofingDocumentFileList = [];
},
warnSendMail(row) {
row.projectPartId = this.proofDocumenCurrentRow.projectPartId
row.testPartNo = this.proofDocumenCurrentRow.testPartNo
row.partDesc = this.proofDocumenCurrentRow.partDesc
row.requiredDeliveryDate = this.proofDocumenCurrentRow.requiredDeliveryDate
if (this.proofDocumenCurrentRow.createBy !== this.$store.state.user.name) {
this.$message({
message: '仅打样单录入人才可以发送提醒!',
@ -1735,6 +1830,117 @@
});
}
},
viewDocumentFile(row) {
let inData = {
orderRef1: row.site,
orderRef2: row.proofingId,
orderRef3: row.documentDefinitionListId,
orderRef4: row.projectId,
orderRef5: this.searchData.projectPartId,
createdBy: row.createdBy,
documentType: row.documentType,
fileName: row.fileName,
page: 1,
limit: 1000
}
searchProjectConfirmatorFileList(inData).then(({data}) => {
if (data && data.code === 0){
this.partProofingDocumentFileList = data.page.list;
}
})
this.viewDocumentFileVisible = true
},
//
viewFile(row) {
//
let image = ['jpg', 'jpeg', 'png', 'gif', 'bmp']
let video = ['mp4', 'avi', 'mov', 'wmv', 'flv']
let office = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx']
let txt = ['txt']
let type = ''
let pdf = ['pdf']
if (image.includes(row.fileType.toLowerCase())) {
type = 'image/' + row.fileType
downLoadObjectFile(row).then(({data}) => {
const blob = new Blob([data], { type: type });
// URL
const fileURL = URL.createObjectURL(blob);
//
const newTab = window.open(fileURL, '_blank')
})
}
else if (video.includes(row.fileType.toLowerCase())) {
type = 'video/' + row.fileType
downLoadObjectFile(row).then(({data}) => {
const blob = new Blob([data], { type: type });
// URL
const fileURL = URL.createObjectURL(blob);
//
const newTab = window.open(fileURL, '_blank')
})
}
else if (txt.includes(row.fileType.toLowerCase())) {
type = 'text/plain'
downLoadObjectFile(row).then(({data}) => {
const blob = new Blob([data], { type: type });
// URL
const fileURL = URL.createObjectURL(blob);
//
const newTab = window.open(fileURL, '_blank')
})
}
else if (office.includes(row.fileType.toLowerCase())) {
if (row.fileType.toLowerCase() === 'doc' || row.fileType.toLowerCase() === 'docx') {
type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
} else if (row.fileType.toLowerCase() === 'ppt' || row.fileType.toLowerCase() === 'pptx') {
type = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
} else {
type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
}
downLoadObjectFile(row).then(({data}) => {
const blob = new Blob([data], { type: type });
// URL
const fileURL = URL.createObjectURL(blob);
//
const newTab = window.open(fileURL, '_blank')
})
}
else if (pdf.includes(row.fileType.toLowerCase())) {
type = 'application/pdf'
downLoadObjectFile(row).then(({data}) => {
const blob = new Blob([data], { type: type });
// URL
const fileURL = URL.createObjectURL(blob);
//
const newTab = window.open(fileURL, '_blank')
})
}
else {
this.$message({
message: '不支持的文件类型',
type: 'warning'
})
}
},
//
downloadFile (row) {
downLoadObjectFile(row)
.then(({data}) => {
//
const blob = new Blob([data], {type:'application/octet-stream;charset=utf-8'})
//
const fileName = row.fileName
// a
const linkNode = document.createElement('a')
linkNode.download = fileName // adownload
linkNode.style.display = 'none'
linkNode.href = URL.createObjectURL(blob) // Blob URL
document.body.appendChild(linkNode)
linkNode.click() //
URL.revokeObjectURL(linkNode.href) // URL
document.body.removeChild(linkNode)
})
},
}
};
</script>

4
src/views/modules/eam/dashBoard.vue

@ -3,7 +3,7 @@
<el-row :gutter="20">
<el-col :span="6">
<el-card @click.native="navigateToMes('unfinishedProjects',counts)" class="card-item">
<div class="card-title">我参与的未结项目</div>
<div class="card-title">我参与的未结物料</div>
<div class="card-count">{{ counts.unfinishedProjectsCount }}</div>
</el-card>
</el-col>
@ -23,7 +23,7 @@
<el-row :gutter="20" style="margin-top: 10px;">
<el-col :span="6">
<el-card @click.native="navigateToMes('allProjects',counts)" class="card-item">
<div class="card-title">我参与的所有项目</div>
<div class="card-title">我参与的所有物料</div>
<div class="card-count">{{ counts.allProjectsCount }}</div>
</el-card>
</el-col>

184
src/views/modules/eam/eamProjectInfo.vue

@ -171,17 +171,14 @@
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
<el-form-item prop="customerNo" v-if="!modalPartDisableFlag" :rules="rules.customerNo" >
<el-form-item prop="customerNo">
<span slot="label" style="">
<a herf="#" @click="getBaseList(509)">客户编码</a>
<a herf="#" @click="newCustomer">新客户</a>
</span>
<el-input v-model="modalData.customerNo" disabled style="width: 110px"></el-input>
<el-input v-model="modalData.customerNo" @blur="customerNoBlur" style="width: 110px"></el-input>
</el-form-item>
<el-form-item label="客户编码" v-if="modalPartDisableFlag" prop="customerNo" :rules="rules.customerNo">
<el-input v-model="modalData.customerNo" disabled style="width: 110px"></el-input>
</el-form-item>
<el-form-item label="客户名称" prop="customerDesc" :rules="rules.customerDesc">
<el-form-item label="客户名称" prop="customerDesc">
<el-input v-model="modalData.customerDesc" disabled style="width: 418px"></el-input>
</el-form-item>
</el-form>
@ -730,6 +727,7 @@ import {
import row from "element-ui/packages/row";
import 'moment/locale/zh-cn';
import {EventBus} from "../../../main";
import {queryCustomerList} from "../../../api/customer/customer";
/*打样记录組件*/
export default {
@ -1754,20 +1752,6 @@ import {EventBus} from "../../../main";
trigger: ['blur','change']
}
],
customerNo:[
{
required: true,
message: ' ',
trigger: ['blur','change']
}
],
customerDesc:[
{
required: true,
message: ' ',
trigger: ['blur','change']
}
],
testPartNo:[
{
required: true,
@ -2096,6 +2080,26 @@ import {EventBus} from "../../../main";
this.newCustomerFlag = true
},
customerNoBlur(){
let params = {
customerNo: this.modalData.customerNo,
createBy: this.$store.state.user.name,
}
queryCustomerList(params).then(({data}) => {
if (data && data.code === 0) {
if (data.rows.length === 1){
this.modalData.customerDesc = data.rows[0].customerDesc
}else {
this.modalData.customerDesc = ''
}
}else {
this.$message.warning(data.message)
}
}).catch((error) => {
this.$message.error(error)
})
},
saveNewCustomer () {
this.generateNextCustomerNo().then((customerNo) => {
if (customerNo !== false) {
@ -2415,15 +2419,19 @@ import {EventBus} from "../../../main";
return
}
if (this.modalData.customerNo === '' || this.modalData.customerNo == null) {
this.$message.warning('请输入客户编码!')
return
this.modalData.customerNo = 'C0000'
this.modalData.customerDesc = '无客户'
this.modalData.finalCustomerId = this.modalData.customerNo
}
if (this.modalData.customerDesc === '' || this.modalData.customerDesc == null) {
this.$message.warning('请输入客户名称!')
return
this.$alert('该客户不存在,请重新输入客户编码或点击新客户添加客户!', '提示', {
confirmButtonText: '确定',
type: 'warning'
})
return;
}
//
if (this.searchData.projectCreationDate === '' || this.searchData.projectCreationDate == null) {
if (this.searchData.projectCreationDate == null) {
this.$message.warning('请选择立项日期!')
return
}
@ -2478,20 +2486,61 @@ import {EventBus} from "../../../main";
type: 'warning'
}).then(() => {
this.modalData.status = '草稿'
let inData = {
projectId : null,
projectNo: this.modalData.projectNo,
projectDesc: this.modalData.projectDesc,
projectCategory: this.modalData.projectCategory,
projectCloseDate: this.modalData.projectCloseDate,
needDate: this.modalData.needDate,
cProjectRegion: this.modalData.cProjectRegion,
projectManager: this.modalData.projectManager,
projectOwner: this.modalData.projectOwner,
engineer: this.modalData.engineer,
cQualityEngineer1: this.modalData.cQualityEngineer1,
cQualityEngineer2: this.modalData.cQualityEngineer2,
cQualityEngineer3: this.modalData.cQualityEngineer3,
cManufactureEngineer: this.modalData.cManufactureEngineer,
projectCreationDate: this.modalData.projectCreationDate,
createDate: this.modalData.createDate,
createBy: this.modalData.createBy,
updateBy: this.modalData.updateBy,
site: this.modalData.site,
bu: this.modalData.bu,
customerNo: this.modalData.customerNo,
customerDesc: this.modalData.customerDesc,
status: this.modalData.status,
active: this.modalData.active,
closeDate : this.modalData.projectCloseDate,
buildDate : this.modalData.projectCreationDate,
priority: this.modalData.priority,
testPartNo: 'P000000',
partDesc: '无物料',
}
eamProjectInfoSave(this.modalData).then(({data}) => {
if (data && data.code === '0') {
this.getDataList()
this.modalFlag=false
EventBus.$emit('updateProjectPartInfo')
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {},
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
eamProjectInfoSearch(this.searchData).then(({data}) => {
if (data && data.code === 0) {
inData.projectId = data.page.list[0].projectId
eamProjectPartInfoSave(inData).then(({data}) => {
if (data && data.code === 0) {
this.getDataList()
this.modalFlag = false
EventBus.$emit('updateProjectPartInfo')
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
},
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
}
})
}
})
@ -2505,16 +2554,61 @@ import {EventBus} from "../../../main";
}
else {
this.modalData.status = '草稿'
let inData = {
projectId : null,
projectNo: this.modalData.projectNo,
projectDesc: this.modalData.projectDesc,
projectCategory: this.modalData.projectCategory,
projectCloseDate: this.modalData.projectCloseDate,
needDate: this.modalData.needDate,
cProjectRegion: this.modalData.cProjectRegion,
projectManager: this.modalData.projectManager,
projectOwner: this.modalData.projectOwner,
engineer: this.modalData.engineer,
cQualityEngineer1: this.modalData.cQualityEngineer1,
cQualityEngineer2: this.modalData.cQualityEngineer2,
cQualityEngineer3: this.modalData.cQualityEngineer3,
cManufactureEngineer: this.modalData.cManufactureEngineer,
projectCreationDate: this.modalData.projectCreationDate,
createDate: this.modalData.createDate,
createBy: this.modalData.createBy,
updateBy: this.modalData.updateBy,
site: this.modalData.site,
bu: this.modalData.bu,
customerNo: this.modalData.customerNo,
customerDesc: this.modalData.customerDesc,
status: this.modalData.status,
active: this.modalData.active,
closeDate : this.modalData.projectCloseDate,
buildDate : this.modalData.projectCreationDate,
priority: this.modalData.priority,
testPartNo: 'P000000',
partDesc: '无物料',
}
eamProjectInfoSave(this.modalData).then(({data}) => {
if (data && data.code === '0') {
this.getDataList()
this.modalFlag=false
EventBus.$emit('updateProjectPartInfo')
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {},
eamProjectInfoSearch(this.searchData).then(({data}) => {
if (data && data.code === 0) {
inData.projectId = data.page.list[0].projectId
eamProjectPartInfoSave(inData).then(({data}) => {
if (data && data.code === 0) {
this.getDataList()
this.modalFlag = false
EventBus.$emit('updateProjectPartInfo')
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
},
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
}
})
} else {
this.$alert(data.msg, '错误', {

23
src/views/modules/eam/eamProjectInfoForConfirm.vue

@ -254,7 +254,7 @@
import {
searchProjectUploadsDocumentList,
searchProjectOverUploadsDocumentList,
searchConfirmProgressList, searchOverConfirmProgressList
searchConfirmProgressList, searchOverConfirmProgressList, searchAllConfirmProgressList
} from "../../../api/eam/eamProofing";
import {
deleteProjectFile,
@ -829,6 +829,7 @@ export default {
//
getDataList () {
console.log(this.$route.query.flag)
this.searchData.limit = this.pageSize
this.searchData.page = this.pageIndex
if (this.$route.query.flag === '4') {
@ -849,7 +850,7 @@ export default {
})
}
})
} else {
} else if (this.$route.query.flag === '3') {
searchConfirmProgressList(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.page.list
@ -867,6 +868,24 @@ export default {
})
}
})
}else {
searchAllConfirmProgressList(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.page.list
this.pageIndex = data.page.currPage
this.pageSize = data.page.pageSize
this.totalPage = data.page.totalCount
this.dataList.forEach((item) => {
item.projectManagerName = item.projectManager.split('-')[1]
item.projectOwnerName = item.projectOwner.split('-')[1]
item.engineerName = item.engineer.split('-')[1]
item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1]
item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1]
item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
})
}
})
}
},

91
src/views/modules/eam/eamProjectInfoForUploads.vue

@ -139,7 +139,7 @@
import {
searchProjectUploadsDocumentList,
searchProjectOverUploadsDocumentList,
searchConfirmProgressList, searchOverConfirmProgressList, getProofDocument
searchConfirmProgressList, searchOverConfirmProgressList, getProofDocument, searchAllProjectUploadsDocumentList
} from "../../../api/eam/eamProofing";
import {searchConfirmProgressPusherList} from "../../../api/eam/eamProject";
import {getSiteAndBuByUserName} from "../../../api/qc/qc";
@ -714,6 +714,24 @@ export default {
fixed: '',
columnWidth: 180,
},
{
userId: this.$store.state.user.name,
functionId: 101001014,
serialNumber: '101001014Table1ProjectLeader',
tableId: "101001014Table1",
tableName: "打样文档表",
columnProp: 'projectLeader',
headerAlign: "center",
align: "center",
columnLabel: '文档负责人',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 70,
},
{
userId: this.$store.state.user.name,
functionId: 101001014,
@ -961,9 +979,26 @@ export default {
item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
})
for (let i = 0; i < this.dataList.length; i++) {
if (this.dataList[i].responsibleDepartment === 'R001'){
this.dataList[i].projectLeader = this.dataList[i].projectManager.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R002'){
this.dataList[i].projectLeader = this.dataList[i].projectOwner.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R004'){
this.dataList[i].projectLeader = this.dataList[i].engineer.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R005'){
this.dataList[i].projectLeader = this.dataList[i].cQualityEngineer1.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R007'){
this.dataList[i].projectLeader = this.dataList[i].cQualityEngineer2.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R008'){
this.dataList[i].projectLeader = this.dataList[i].cQualityEngineer3.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R009'){
this.dataList[i].projectLeader = this.dataList[i].cManufactureEngineer.split("-")[1]
}
}
}
})
}else {
}else if(this.$route.query.flag === '1') {
searchProjectUploadsDocumentList(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.page.list
@ -979,8 +1014,60 @@ export default {
item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
})
for (let i = 0; i < this.dataList.length; i++) {
if (this.dataList[i].responsibleDepartment === 'R001'){
this.dataList[i].projectLeader = this.dataList[i].projectManager.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R002'){
this.dataList[i].projectLeader = this.dataList[i].projectOwner.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R004'){
this.dataList[i].projectLeader = this.dataList[i].engineer.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R005'){
this.dataList[i].projectLeader = this.dataList[i].cQualityEngineer1.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R007'){
this.dataList[i].projectLeader = this.dataList[i].cQualityEngineer2.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R008'){
this.dataList[i].projectLeader = this.dataList[i].cQualityEngineer3.split("-")[1]
} else if(this.dataList[i].responsibleDepartment === 'R009'){
this.dataList[i].projectLeader = this.dataList[i].cManufactureEngineer.split("-")[1]
}
}
}
})
}else {
searchAllProjectUploadsDocumentList(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.page.list
this.pageIndex = data.page.currPage
this.pageSize = data.page.pageSize
this.totalPage = data.page.totalCount
this.dataList.forEach((item) => {
item.projectManagerName = item.projectManager.split('-')[1]
item.projectOwnerName = item.projectOwner.split('-')[1]
item.engineerName = item.engineer.split('-')[1]
item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1]
item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1]
item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
})
for (let i = 0; i < this.dataList.length; i++) {
if (this.dataList[i].responsibleDepartment === 'R001') {
this.dataList[i].projectLeader = this.dataList[i].projectManager.split("-")[1]
} else if (this.dataList[i].responsibleDepartment === 'R002') {
this.dataList[i].projectLeader = this.dataList[i].projectOwner.split("-")[1]
} else if (this.dataList[i].responsibleDepartment === 'R004') {
this.dataList[i].projectLeader = this.dataList[i].engineer.split("-")[1]
} else if (this.dataList[i].responsibleDepartment === 'R005') {
this.dataList[i].projectLeader = this.dataList[i].cQualityEngineer1.split("-")[1]
} else if (this.dataList[i].responsibleDepartment === 'R007') {
this.dataList[i].projectLeader = this.dataList[i].cQualityEngineer2.split("-")[1]
} else if (this.dataList[i].responsibleDepartment === 'R008') {
this.dataList[i].projectLeader = this.dataList[i].cQualityEngineer3.split("-")[1]
} else if (this.dataList[i].responsibleDepartment === 'R009') {
this.dataList[i].projectLeader = this.dataList[i].cManufactureEngineer.split("-")[1]
}
}
}
})
}
},

171
src/views/modules/eam/eamProjectPartInfo.vue

@ -196,12 +196,13 @@
<el-table-column
header-align="center"
align="center"
width="130"
width="150"
fixed="left"
label="操作">
<template slot-scope="scope">
<a type="primary" v-if="scope.row.documentDefinitionListId !== '-1'" @click="uploadFile(scope.row)">上传文件</a>
<a type="text" size="small" v-if="scope.row.documentDefinitionListId !== '-1' && !shouldShowDelete(scope.row)" @click="warnSendMail(scope.row)">提醒</a>
<a type="text" size="small" v-if="shouldShowDelete(scope.row)" @click="viewMassDocumentFile(scope.row)">查看附件</a>
<a type="text" size="small" v-if="shouldShowDelete(scope.row)" @click="massProductionDocumentDelete(scope.row)">删除</a>
</template>
</el-table-column>
@ -275,6 +276,16 @@
<el-table-column header-align="center" align="center" width="50" prop="itemNo" label="序号"></el-table-column>
<el-table-column header-align="center" align="center" prop="documentType" label="文档类型"></el-table-column>
<el-table-column header-align="center" align="center" prop="fileName" label="文件名"></el-table-column>
<el-table-column
header-align="center"
align="center"
width="90"
fixed="right"
label="操作">
<template slot-scope="scope">
<a type="text" size="small" @click="viewMassDocumentFile(scope.row)">查看附件</a>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
@ -663,6 +674,49 @@
</div>
</el-dialog>
<el-dialog title="查看附件" @close="closeViewMassDocumentFileVisible" :visible.sync="viewMassDocumentFileVisible" width="770px" style="margin-top: 0vh" :close-on-click-modal="false">
<el-table
:height="height + 200"
:data="projectConfirmatorFileList"
border
style="width: 100%;margin-top: 0px;margin-left: 0px;">
<el-table-column
prop="fileName"
header-align="center"
align="left"
min-width="250"
label="文件名">
</el-table-column>
<el-table-column
prop="createDate"
header-align="center"
align="center"
min-width="80"
label="上传时间">
</el-table-column>
<el-table-column
prop="createdBy"
header-align="center"
align="center"
min-width="50"
label="上传人">
</el-table-column>
<el-table-column
header-align="center"
align="center"
width="100"
label="操作">
<template slot-scope="scope">
<a type="text" size="small" @click="viewFile(scope.row)">查看</a>
<a type="text" size="small" @click="downloadFile(scope.row)">下载</a>
</template>
</el-table-column>
</el-table>
<div slot="footer" class="dialog-footer" style="margin-top: 0px">
<el-button @click="closeViewMassDocumentFileVisible()">关闭</el-button>
</div>
</el-dialog>
<upload-file-list-1 folder="projectPMPDocumentFiles" title="上传文档" :file-list.sync="fileList" :label="'文档类型ID:'" :no="otherDocumentCurrentRow.documentTypeId" :no-type="otherDocumentCurrentRow.documentType"
:proofing-id="proofingCurrentRow.proofingId" :proofing-no="proofingCurrentRow.proofingNo" :bu="proofingCurrentRow.buNo" :site="proofingCurrentRow.site" :upload-dialog.sync="uploadDialog" :no-desc="otherDocumentCurrentRow.documentDesc" :id="otherDocumentCurrentRow.id"
:project-id="proofingCurrentRow.projectId" :project-no="proofingCurrentRow.projectNo" :project-desc="proofingCurrentRow.projectDesc" :document-type="proofingCurrentRow.documentType" :conclusion="'N/A'"
@ -855,6 +909,7 @@ import {EventBus} from "../../../main";
confirmProgressDocumentList: [],
projectConfirmatorFileList: [],
viewDocumentFileVisible: false,
viewMassDocumentFileVisible: false,
searchProjectDocumentTypeData: {
site: this.$store.state.user.site,
projectId: '',
@ -1555,7 +1610,24 @@ import {EventBus} from "../../../main";
fixed: '',
columnWidth: 70,
},
{
userId: this.$store.state.user.name,
functionId: 101001014,
serialNumber: '101001014Table1ProjectLeader',
tableId: "101001014Table1",
tableName: "打样文档表",
columnProp: 'projectLeader',
headerAlign: "center",
align: "center",
columnLabel: '文档负责人',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 70,
},
{
userId: this.$store.state.user.name,
functionId: 101001014,
@ -1777,7 +1849,24 @@ import {EventBus} from "../../../main";
fixed: '',
columnWidth: 70,
},
{
userId: this.$store.state.user.name,
functionId: 101001014,
serialNumber: '101001014Table1ProjectLeader',
tableId: "101001014Table1",
tableName: "打样文档表",
columnProp: 'projectLeader',
headerAlign: "center",
align: "center",
columnLabel: '文档负责人',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 70,
},
{
userId: this.$store.state.user.name,
functionId: 101001014,
@ -2462,6 +2551,13 @@ import {EventBus} from "../../../main";
partDesc: row.partDesc,
projectCategory: row.projectCategory,
cProjectTypeDb: row.projectCategory,
projectManager: row.projectManager,
projectOwner: row.projectOwner,
engineer: row.engineer,
cQualityEngineer1: row.cQualityEngineer1,
cQualityEngineer2: row.cQualityEngineer2,
cQualityEngineer3: row.cQualityEngineer3,
cManufactureEngineer: row.cManufactureEngineer,
proofingNo: '',
rrequiredDeliveryDate: '',
createDate: new Date(),
@ -2610,6 +2706,13 @@ import {EventBus} from "../../../main";
site: this.proofingCurrentRow.site,
projectId: this.proofingCurrentRow.projectId,
projectPartId: this.proofingCurrentRow.projectPartId,
projectManager: this.proofingCurrentRow.projectManager,
projectOwner: this.proofingCurrentRow.projectOwner,
engineer: this.proofingCurrentRow.engineer,
cQualityEngineer1: this.proofingCurrentRow.cQualityEngineer1,
cQualityEngineer2: this.proofingCurrentRow.cQualityEngineer2,
cQualityEngineer3: this.proofingCurrentRow.cQualityEngineer3,
cManufactureEngineer: this.proofingCurrentRow.cManufactureEngineer,
// username:this.$store.state.user.name,
page: 1,
limit: 1000
@ -2915,6 +3018,21 @@ import {EventBus} from "../../../main";
if (this.projectOtherDocumentList[i].documentTypeId !== 'N/A') {
this.proofDocumentListDefinition.push(this.projectOtherDocumentList[i])
}
if (this.projectOtherDocumentList[i].responsibleDepartment === 'PM/Sales'){
this.projectOtherDocumentList[i].projectLeader = this.proofingCurrentRow.projectManager.split("-")[1]
} else if(this.projectOtherDocumentList[i].responsibleDepartment === 'PjM'){
this.projectOtherDocumentList[i].projectLeader = this.proofingCurrentRow.projectOwner.split("-")[1]
} else if(this.projectOtherDocumentList[i].responsibleDepartment === 'Engineer'){
this.projectOtherDocumentList[i].projectLeader = this.proofingCurrentRow.engineer.split("-")[1]
} else if(this.projectOtherDocumentList[i].responsibleDepartment === 'IPQC-Lam/Pri/Etch/Slit'){
this.projectOtherDocumentList[i].projectLeader = this.proofingCurrentRow.cQualityEngineer1.split("-")[1]
} else if(this.projectOtherDocumentList[i].responsibleDepartment === 'IPQC-Converting'){
this.projectOtherDocumentList[i].projectLeader = this.proofingCurrentRow.cQualityEngineer2.split("-")[1]
} else if(this.projectOtherDocumentList[i].responsibleDepartment === 'FQC'){
this.projectOtherDocumentList[i].projectLeader = this.proofingCurrentRow.cQualityEngineer3.split("-")[1]
} else if(this.projectOtherDocumentList[i].responsibleDepartment === 'MFQ'){
this.projectOtherDocumentList[i].projectLeader = this.proofingCurrentRow.cManufactureEngineer.split("-")[1]
}
}
for (let i = 0; i < this.projectOtherDocumentList.length; i++) {
this.projectOtherDocumentList[i].buNo = this.proofingCurrentRow.buNo
@ -3130,6 +3248,23 @@ import {EventBus} from "../../../main";
searchProjectAllDocument(inData).then(({data}) => {
if (data && data.code === 0){
this.projectAllDocumentList = data.page.list;
for (let i = 0; i < this.projectAllDocumentList.length; i++) {
if (this.projectAllDocumentList[i].responsibleDepartment === 'PM/Sales'){
this.projectAllDocumentList[i].projectLeader = this.proofingCurrentRow.projectManager.split("-")[1]
} else if(this.projectAllDocumentList[i].responsibleDepartment === 'PjM'){
this.projectAllDocumentList[i].projectLeader = this.proofingCurrentRow.projectOwner.split("-")[1]
} else if(this.projectAllDocumentList[i].responsibleDepartment === 'Engineer'){
this.projectAllDocumentList[i].projectLeader = this.proofingCurrentRow.engineer.split("-")[1]
} else if(this.projectAllDocumentList[i].responsibleDepartment === 'IPQC-Lam/Pri/Etch/Slit'){
this.projectAllDocumentList[i].projectLeader = this.proofingCurrentRow.cQualityEngineer1.split("-")[1]
} else if(this.projectAllDocumentList[i].responsibleDepartment === 'IPQC-Converting'){
this.projectAllDocumentList[i].projectLeader = this.proofingCurrentRow.cQualityEngineer2.split("-")[1]
} else if(this.projectAllDocumentList[i].responsibleDepartment === 'FQC'){
this.projectAllDocumentList[i].projectLeader = this.proofingCurrentRow.cQualityEngineer3.split("-")[1]
} else if(this.projectAllDocumentList[i].responsibleDepartment === 'MFQ'){
this.projectAllDocumentList[i].projectLeader = this.proofingCurrentRow.cManufactureEngineer.split("-")[1]
}
}
}
})
},
@ -3231,7 +3366,9 @@ import {EventBus} from "../../../main";
projectNo: this.proofingCurrentRow.projectNo,
projectPartId: this.proofingCurrentRow.projectPartId,
testPartNo: this.proofingCurrentRow.testPartNo,
partDesc: this.proofingCurrentRow.partDesc,
selectedDocumentItems: this.selectedDocumentItems,
wantedConfirmDate: new Date(this.modalData.wantedConfirmDate.getTime() + 8 * 60 * 60 * 1000),
}
let saveDocumentPromises = this.handleDocumentSave(inData);
saveDocumentPromises
@ -3629,6 +3766,10 @@ import {EventBus} from "../../../main";
this.viewDocumentFileVisible = false;
this.projectConfirmatorFileList = [];
},
closeViewMassDocumentFileVisible(){
this.viewMassDocumentFileVisible = false;
this.projectConfirmatorFileList = [];
},
viewDocumentFile(row) {
this.confirmData = {
site: row.site,
@ -3654,6 +3795,7 @@ import {EventBus} from "../../../main";
orderRef3: row.userid,
orderRef4: row.orderRef1,
orderRef5: row.orderRef2,
id : row.documentId,
page: 1,
limit: 1000
}
@ -3664,6 +3806,27 @@ import {EventBus} from "../../../main";
})
this.viewDocumentFileVisible = true
},
viewMassDocumentFile(row) {
let inData = {
orderRef1: row.site,
orderRef2: row.proofingId,
orderRef3: row.documentDefinitionListId,
orderRef4: row.projectId,
orderRef5: this.proofingCurrentRow.projectPartId,
createdBy: row.createdBy,
id : row.documentId,
documentType: row.documentType,
fileName: row.fileName,
page: 1,
limit: 1000
}
searchProjectConfirmatorFileList(inData).then(({data}) => {
if (data && data.code === 0){
this.projectConfirmatorFileList = data.page.list;
}
})
this.viewMassDocumentFileVisible = true
},
deleteFile(row) {
if (this.confirmData.confirmedBy === this.$store.state.user.userDisplay) {
this.$confirm('是否删除该文件?', '提示', {
@ -3886,6 +4049,8 @@ import {EventBus} from "../../../main";
warnSendMail(row) {
row.projectPartId = this.proofingCurrentRow.projectPartId
row.testPartNo = this.proofingCurrentRow.testPartNo
row.partDesc = this.proofingCurrentRow.partDesc
row.needDate = this.proofingCurrentRow.needDate
this.$confirm('确认发送提醒?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',

Loading…
Cancel
Save