Merge remote-tracking branch 'origin/liujun-2024-04-12-一公司人员定位' into liujun-2024-04-12-一公司人员定位

20240528Test
limingyu 2024-04-13 14:47:25 +08:00
commit 12195ddd0b
2 changed files with 330 additions and 46 deletions

View File

@ -0,0 +1,316 @@
<template>
<div>
<el-dialog
v-loading="loading"
:visible.sync="visible"
:append-to-body="appendToBody"
:before-close="beforeClose"
title="审批"
width="1200px"
destroy-on-close>
<el-form ref="form" :model="material" :rules="rules" label-width="200px" label-position="right" type="flex">
<el-row :gutter="12">
<el-col :span="12">
<el-form-item prop="typeInfo" label="映射类型: ">
<el-select v-model="material.typeInfo" filterable style="width: 300px" placeholder="请选择" @change="saveInfo">
<el-option v-for="item in dic.mapType" :key="item.value" :label="item.name" :value="JSON.stringify(item)"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-col :span="12">
<el-form-item label="部门:" prop="departmentId">
<Treeselect
:options="dic.deptList"
:normalizer="normalizer"
v-model="material.departmentId"
placeholder="请选择部门"
no-options-text="暂无数据"
no-children-text="暂无数据"
style="width: 300px"
@select="getPeopleList($event)"
/>
</el-form-item>
</el-col>
</el-col>
<el-col :span="12">
<el-form-item label="人员:" prop="userInfo">
<el-select v-model="material.userInfo" style="width: 300px" placeholder="请选择" @change="chooseUser">
<el-option
v-for="item in dic.userList"
:key="item.USER_ID"
:value="JSON.stringify(item)"
:label="item.NAME"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="设备编号:" prop="deviceId">
<el-input v-model="material.deviceId" placeholder="请输入内容"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="设备名称:" prop="deviceName">
<el-input v-model="material.deviceName" placeholder="请输入内容"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="其他系统编号:" prop="id">
<el-input v-model="material.id" placeholder="请输入内容"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="其他系统编号备注:" prop="id_remark">
<el-input v-model="material.idRemark" placeholder="请输入内容"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="备注:" prop="id">
<el-input v-model="material.remark" placeholder="请输入内容"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<el-button type="primary" @click="sendMessage('1')"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import vueQr from 'vue-qr'
import Treeselect from '@riophae/vue-treeselect'
import { requestFN } from '@/utils/request'
import uploadFile from '../../../util/uploadFile/index.vue'
export default {
components: { uploadFile, Treeselect, vueQr },
props: {
appendToBody: {
type: Boolean,
default: false
}
},
data() {
return {
visible: false,
loading: false,
material: {
typeInfo: '',
type: '',
typeName: '',
deptInfo: '',
departmentId: null,
departmentName: '',
userInfo: '',
userId: '',
userName: '',
deviceId: '',
deviceName: '',
id: '',
idRemark: '',
remark: ''
},
form: {
required: {
type: '',
typeName: '',
departmentId: '',
departmentName: '',
userId: '',
userName: '',
deviceId: '',
deviceName: '',
id: '',
idRemark: ''
},
remark: ''
},
normalizer(node) {
return {
id: node.id,
label: node.name,
children: node.nodes
}
},
rules: {
typeInfo: [
{ required: true, message: '请选择映射类型', trigger: 'change' }
],
userInfo: [
{ required: true, message: '请选择映射人', trigger: 'change' }
],
departmentId: [
{ required: true, message: '请选择部门', trigger: 'change' }
],
deviceId: [
{ required: true, message: '请填写其他系统编号', trigger: 'change' }
],
deviceName: [
{ required: true, message: '请填写其他系统名称', trigger: 'change' }
],
id: [
{ required: true, message: '请填写其他系统编号', trigger: 'change' }
],
idRemark: [
{ required: true, message: '请填写其他系统编号备注', trigger: 'change' }
]
},
heirloom: {},
departmentTree: [],
peopleList: [],
dic: {
alarmStatus: [],
logType: [],
mapType: [],
deptList: [],
userList: []
}
}
},
methods: {
async init(e) {
if (e) {
this.heirloom = e
}
this.visible = true
await this.getDepartmentTree()
this.getDict()
},
getMenu() {
return new Promise(resolve => {
requestFN(
'/flowTrain/getPintName', { FLOWS_TYPE: this.info.FLOWS_TYPE, FLOWS_STEP: this.info.FLOWS_STEP }
).then((data) => {
this.menu.department = data.Department
this.menu.user = data.User
this.menu.uploadFile = data.UploadFile
this.menu.limitFlag = data.limitFlag
resolve(true)
}).catch((e) => {
})
})
},
sendMessage(e) {
this.$refs.form.validate((valid) => {
if (!valid) {
this.$message.error('请填写完整信息')
} else {
this.form.required.type = this.material.type
this.form.required.typeName = this.material.typeName
this.form.required.departmentId = this.material.departmentId
this.form.required.departmentName = this.material.departmentName
this.form.required.userId = this.material.userId
this.form.required.userName = this.material.userName
this.form.required.deviceId = this.material.deviceId
this.form.required.deviceName = this.material.deviceName
this.form.required.id = this.material.id
this.form.required.idRemark = this.material.idRemark
this.form.remark = this.material.remark
requestFN(
'/dingWei/saveOrUpdateMap', { data: JSON.stringify(this.form) }
).then((data) => {
if (data.code === 0) {
this.$message.success('操作成功')
this.handleClose()
this.$emit('refresh')
} else {
this.$message.error(data.msg)
}
}).catch((e) => {
console.log(e)
})
}
})
},
getPeopleList(e) {
this.material.departmentName = e.name
requestFN(
'/user/listAll',
{
DEPARTMENT_ID: e.id
}
).then((data) => {
this.dic.userList = data.userList
this.material.userInfo = ''
}).catch((e) => {
console.log(e)
})
},
chooseUser(e) {
const entity = JSON.parse(e)
this.material.userId = entity.USER_ID
this.material.userName = entity.NAME
},
handleClose() {
this.form = {
STATUS: '',
APPOINT_DEPARTMENT_ID: null,
APPOINT_DEPARTMENT_NAME: '',
APPOINT_USER_ID: '',
APPOINT_USER_NAME: '',
OPINION: '',
user: '',
list: [],
tm: new Date().getTime()
}
this.visible = false
},
beforeClose() {
this.visible = false
this.form = {
STATUS: '',
APPOINT_DEPARTMENT_ID: null,
APPOINT_DEPARTMENT_NAME: '',
APPOINT_USER_ID: '',
APPOINT_USER_NAME: '',
OPINION: '',
user: '',
list: [],
tm: new Date().getTime()
}
},
saveInfo(e) {
const info = JSON.parse(e)
this.material.type = info.value
this.material.typeName = info.name
},
getDict() {
requestFN('dingWei/getDictionary').then((data) => {
this.dic.alarmStatus = JSON.parse(data.AlarmStatus)
this.dic.logType = JSON.parse(data.LogType)
this.dic.mapType = JSON.parse(data.MapType)
}).catch((e) => {
this.listLoading = false
})
},
getDepartmentTree() {
return new Promise(resolve => {
requestFN(
'/department/listTree',
).then((data) => {
this.dic.deptList = this.removeEmptyChildren(JSON.parse(data.zTreeNodes))
resolve(true)
}).catch((e) => {
})
})
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -58,6 +58,7 @@
</div>
<pagination :total="listQuery.total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/>
</div>
<info ref="info" @flush="getList"/>
</div>
</template>
@ -65,10 +66,11 @@
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import info from './info.vue'
import vueQr from 'vue-qr'
export default {
components: { Pagination, vueQr },
components: { Pagination, vueQr, info },
directives: { waves },
data() {
return {
@ -78,6 +80,9 @@ export default {
limit: 10,
total: 0
},
listLoading: false,
KEYWORDS: '',
varList: [],
add: false, //
del: false, //
edit: false //
@ -85,18 +90,12 @@ export default {
},
created() {
this.getDict()
this.getList()
// this.getList()
this.hasButton()
},
methods: {
handleSelectWithDifferentStatus(row, rowIndex) {
if (row.STATUS === 0) {
//
return true
} else {
//
return false
}
return true
},
getQuery() {
if (this.$refs.multipleTable) {
@ -109,54 +108,23 @@ export default {
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.STATUS = ''
this.getQuery()
},
getList() {
this.listLoading = true
requestFN(
'/dw/getMapList?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
KEYWORDS: this.KEYWORDS,
STATUS: '1',
EMPLOY_FLAG: '1',
CHECK_STATUS: '1'
}
'/dingWei/getMapList?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page, {}
).then((data) => {
this.listLoading = false
this.varList = data.list
this.total = data.page.totalResult
this.total = data.page.total
}).catch((e) => {
this.listLoading = false
})
.catch((e) => {
this.listLoading = false
})
},
handleAdd() {
const _selectData = this.$refs.multipleTable.selection
if (_selectData == null || _selectData.length == 0) {
this.$message({
message: '未勾选培训人员...',
type: 'error'
})
return false
}
var users = []
_selectData.map(item => {
if (item.STATUS === 0) {
users.push(item.USER_ID)
}
})
if (users == null || users.length == 0) {
this.$message({
message: '勾选人员暂无法提交申请...',
type: 'error'
})
return false
}
this.$refs.apply.init(users)
this.$refs.info.init()
},
hasButton() {
var keys = 'trainingbatch:add,trainingbatch:del,trainingbatch:edit,fhSms,email,fromExcel,toExcel'
@ -182,7 +150,7 @@ export default {
})
},
getDict: function() {
requestFN('dw/getDictionary').then((data) => {
requestFN('dingWei/getDictionary').then((data) => {
this.wenhuachengduList = data.list
}).catch((e) => {
this.listLoading = false