master
xhj 11 months ago
parent b137a043d6
commit 7b865565ef

@ -0,0 +1,383 @@
<template>
<el-container>
<el-header style="width: 100%; height: 30px;font-size: 12px">
<el-form :inline="true" label-width="90px" >
<el-row>
<el-col :span="20">
<el-form-item label="工程编号:" >
<el-select v-model="queryParam.czbh" filterable placeholder="工程编号" @change="czbhChange" >
<el-option
v-for="item in projectData"
:key="item.czbh"
:label="item.czbh"
:value="item.czbh">
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="分段号:">-->
<!-- <el-input v-model="queryParam.fdh" type="search" placeholder="分段号" ></el-input>-->
<!-- </el-form-item>-->
</el-col>
<el-col :span="4">
<el-form-item style="float: right" >
<el-button type="success" @click="loadData()"></el-button>
<el-button type="success" @click.native="uploadExcel"> <el-upload
:action="uploadAction"
:show-file-list="false"
:before-upload="beforeAvatarUpload"
:data="uploadData"
:on-success="handleAvatarSuccess"
:disabled="uploadState==0?true:false"
:headers="heads"
>
直观图模板导入
</el-upload> </el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-header>
<el-divider></el-divider>
<el-container :style="defaultHeight" style="padding-top: 0px">
<!-- <el-container >-->
<el-main>
<div class="mytablefdt" >
<vxe-grid
id="id"
ref="xGrid"
:empty-text="emtext"
show-footer
:height="height"
resizable
:custom-config="{storage: true}"
:columns="tableColumn"
:data="list"
:show-header="false"
align="center"
@cell-click="cellClick"
border=none
:cell-style="cellStyle"
>
</vxe-grid>
<!-- <vxe-table-->
<!-- align="center"-->
<!-- :data="tableData">-->
<!-- <template v-for="item in col">-->
<!-- <vxe-column type="column"+{{item}}+ width="60"></vxe-column>-->
<!-- </template>-->
<!-- </vxe-table>-->
</div>
</el-main>
</el-container>
</el-container>
</template>
<script>
import { startLoading, endLoading } from '@/utils'
import { mapGetters } from 'vuex'
import { getToken } from '@/utils/auth'
import { Message } from 'element-ui'
import {getCzFdBase ,getList,upload} from '@/api/fd/base'
import XEUtils from 'xe-utils'
export default {
//
name: 'Czfdzgtdy',
data() {
return {
emtext:'',
defaultHeight: { height: '' },
heads: { token: getToken() },
uploadAction: process.env.VUE_APP_BASE_API + '/api/dmCzfddyb/upload',
uploadData: {},
queryParam: {
czbh: '',
ph: '',
kh: '',
dwgNo: '',
departCode: '02'
},
uploadState: 0,
isupload:'01',
dictData: {},
projectData: [],
col:0,
// tableData: [],
tableColumn: [
],
columns:[],
filterName1:'',
tableData: [
// { id: 10001, name: 'Test1', nickname: 'T1', role: 'Develop', sex: 'Man', age: 0, address: 'Shenzhen' },
// { id: 10002, name: 'Test2', nickname: 'T2', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },
// { id: 10003, name: 'Test3', nickname: 'T3', role: 'PM', sex: 'Man', age: 100, address: 'Shanghai' },
// { id: 10004, name: 'Test4', nickname: 'T4', role: 'Designer', sex: 'Women', age: 70, address: 'Shenzhen' },
// { id: 10005, name: 'Test5', nickname: 'T5', role: 'Develop', sex: 'Women', age: 10, address: 'Shanghai' },
// { id: 10006, name: 'Test6', nickname: 'T6', role: 'Designer', sex: 'Women', age: 90, address: 'Shenzhen' },
// { id: 10007, name: 'Test7', nickname: 'T7', role: 'Test', sex: 'Man', age: 5, address: 'Shenzhen' },
// { id: 10008, name: 'Test8', nickname: 'T8', role: 'Develop', sex: 'Man', age: 80, address: 'Shenzhen' }
]
}
},
computed: {
...mapGetters([
'name',
'bmbm'
]),
list() {
if (this.tableData===undefined){
return []
}
const filterName = XEUtils.toString(this.filterName1).trim().toLowerCase();
if (filterName) {
const filterRE = new RegExp(filterName, 'gi');
const searchProps = this.columns
// const rest = this.tableData.filter(item => searchProps.some(key => XEUtils.toString(item[key]).toLowerCase().indexOf(filterName) > -1));
const rest = this.tableData
return rest.map(row => {
const item = Object.assign({}, row);
searchProps.forEach(key => {
if(XEUtils.toString(item[key]).toLowerCase().indexOf(filterName) > -1){
item[key] = XEUtils.toString(item[key]).replace(filterRE, match => `<span style='background-color: #FFFF00;'>${match}</span>`);
}
});
return item
})
}
return this.tableData
}
},
created() {
window.addEventListener('resize', this.getHeight)
this.getHeight()
this.baseSeacrh()
this.uploadState=0
this.emtext='暂无数据';
// this.loadData()
},
methods: {
czbhChange(){
this.uploadState = 1
},
cellClick({row,column}){
console.log(row[column.field])
console.log(row)
console.log(column)
},
uploadExcel() {
if (this.queryParam.czbh === '') {
this.$message.warning('选择工程编码')
this.uploadState = 0
return
} else {
}
this.uploadData.czbh = this.queryParam.czbh
this.uploadData.isupload = this.isupload
},
beforeAvatarUpload(file) {
//
const isType = file.type === 'application/vnd.ms-excel'
const isTypeComputer = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
const fileType = isType || isTypeComputer
if (!fileType) {
this.$message.error('上传文件只能是xls/xlsx格式')
return
}
startLoading()
return fileType
},
handleAvatarSuccess(res, file) {
endLoading()
if (res.success) {
if(res.data.zt==='01'){
this.$confirm('该模板已导入数据,是否重新导入并覆盖模板数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
distinguishCancelAndClose: true,
type: 'warning'
}).then(type => {
upload({ file: file.raw, czbh: this.queryParam.czbh, isupload: '02' }).then(res => {
if (res.success) {
this.$message({ message: '导入成功', type: 'success' })
this.loadData()
}
})
})
}else{
this.$message({ message: '导入成功', type: 'success' })
this.loadData()
}
} else {
Message({
message: res.message || 'Error',
type: 'error',
duration: 5 * 1000
})
}
},
cellStyle({ row, rowIndex, column }) {
if(row[column.property]){
return {
border:'1px solid black'
// textAlign:'center'
}
}
},
async baseSeacrh() {
getCzFdBase({ }).then(response => {
this.projectData = response.data.czbhs
})
},
loadData() {
if(this.queryParam.czbh===''){
this.$message.warning('选择工程编码')
return
}
getList(this.queryParam).then(res=>{
this.tableColumn=[]
this.emtext=this.queryParam.czbh+"尚未定义直观图请于分段制造部管理人员联系!"
if(res.success){
const col=res.data.col;
for (let i = 0; i <= col; i++) {
let ii=i+'';
let aaa='column'+ii.padStart(3, '0');
this.columns.push(aaa);
let temp1= {
title: `111`,width:"35px",field: `column${ii.padStart(3, '0')}`,type:"html",
// slots: {
// // 使 JSX
// default: ({ row,column }) => {
// if(row[column.property]){
// return [
// <span >{row[column.property]}</span>
// ]
// }else{
// return [
// <span >{row[column.property]}</span>
// ]
//
// }
//
// }
// }
};
this.tableColumn.push(temp1)
}
//this.tableData=res.data.data
this.tableData=res.data.data
//this.list=res.data.data
}
})
},
getHeight() {
this.height = window.innerHeight - 170
this.defaultHeight.height = window.innerHeight - 165 + 'px'
},
}
}
</script>
<style lang="scss" scoped >
.el-header{margin:0;padding: 5px;height:auto;}
.el-container{padding: 0;margin:0;}
.el-main{padding: 0;}
.el-col{padding: 0;}
.el-aside{background: #fff;padding: 0}
.el-container{padding: 0}
.el-row {margin-bottom: 5px;}
.el-row:last-child {margin-bottom: 0; }
.tableStyles{
background: #0a76a4;
}
.my-dropdown {
width: 400px;
height: 400px;
background-color: #fff;
border: 1px solid #dcdfe6;
box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.1);
font-size: 12px;
}
.mytable1{
}
.borderClass{
}
.vxe-input {
display: inline-block !important;
position: relative !important;
width: auto;
}
.el-input {
display: inline-block !important;
position: relative !important;
width: auto;
}
.keyword-lighten {
color: #000;
background-color: #FFFF00;
}
.vxe-textarea--inner {
line-height: inherit;
}
</style>

@ -0,0 +1,353 @@
<template>
<!-- <el-dialog title="收货地址" :visible.sync="dialogFormVisible">-->
<el-container>
<el-header style="width: 100%; height: 80px;font-size: 12px">
<el-form :inline="true" label-width="65px" label-position="left">
<el-row>
<el-col :span="22">
<el-form-item label="单位编码:">
<el-select v-model="request.dwbm" filterable placeholder="单位编码" clearable :disabled="this.flag" >
<!-- <el-select v-model="queryParam.xqdw" filterable placeholder="需求部门" clearable >-->
<el-option
v-for="item in dictData.xqdws"
:key="item.bm"
:label="item.mc"
:value="item.bm">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="车间名称:">
<el-input v-model="request.cjmc" type="search" placeholder="车间名称" ></el-input>
</el-form-item>
<el-form-item label="场地名称:">
<el-input v-model="request.cdmc" type="search" placeholder="场地名称" ></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<el-form-item style="float: right" >
<el-button type="success" @click="initList"></el-button>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="10" :offset="14">
<el-form-item style="float: right" >
<el-button
type="success"
@click="toolbarButtonClickEvent('save')"
>保存</el-button>
<el-button type="success" @click="toolbarButtonClickEvent('insert')"></el-button>
<el-button
type="danger"
@click="toolbarButtonClickEvent('delete')"
>删除
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-header>
<el-container style="padding-top: 0px">
<el-container>
<el-main>
<div class="mytable">
<vxe-grid
id="id"
ref="xGrid"
border
resizable
keep-source
:align="'center'"
:height="height"
:auto-resize="true"
:columns="tableColumn"
highlight-current-row
:data="list"
:custom-config="{ storage: true }"
:edit-config="{ trigger: 'click', mode: 'cell', showStatus: true}"
highlight-hover-row
@edit-actived="editActivedEvent"
show-overflow
show-header-overflow
/>
</div>
</el-main>
</el-container>
</el-container>
</el-container>
</template>
<script>
import {
getXqdwcjcdList,
updateXqdwcjcd,
delXqdwcjcd,
saveXqdwcjcd,
} from '@/api/fd/jc'
import {
getTpBase
} from '@/api/fd/base'
import { mapGetters } from 'vuex'
import XEUtils from 'xe-utils'
import {null2str} from "@/utils/rpkj";
export default {
name:'xqdwcjcd',
data() {
return {
request: {
dwbm:'',
cjmc:'',
cdmc:''
},
list: [],
deptList: [],
clickList: [],
dictData:{},
height: '500px',
tableColumn: [
{ type: 'checkbox', width: 50 ,
},
{ type: 'seq', width: 60, title: '序号' },
{ field: 'dwbm', title: '单位编码', width: 120,
editRender: { name: '$select', options: [],
optionProps: { value: 'bm', label: 'mc' },
props: { clearable: true },events: { change: this.selectChange },
},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'cjmc', title: '车间名称', width: 120, editRender: { name: 'input' },
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'cdmc', title: '场地名称', width: 120, editRender: { name: 'input' },
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'fzry', title: '负责人', width: 120, editRender: { name: 'input' },
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'tel', title: '电话', width: 120, editRender: { name: 'input' },
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'bz', title: '备注', width: 120, editRender: { name: 'input' },
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
]
}
},
computed: {
...mapGetters(['name', 'bmbm','apbm'])
},
created() {
window.addEventListener('resize', this.getHeight)
this.getHeight()
this.initBase()
if(this.apbm==='P30000'){
this.request.dwbm='P30000'
this.flag=true;
}else{
this.flag=false;
}
},
methods: {
initBase(){
getTpBase({}).then(res=>{
this.dictData = res.data
const xGrid = this.$refs.xGrid
const dwbm = xGrid.getColumnByField('dwbm')
dwbm.editRender.options = res.data.xqdws
})
},
initList() {
getXqdwcjcdList(this.request).then((res) => {
this.list = res.data
if (this.$refs.xGrid) {
this.$refs.xGrid.loadData(this.list)
}
})
},
selectChange(row) {
this.$refs.xGrid.clearActived() //
this.$refs.xGrid.setActiveCell(row.row, row.column.property) //
null2str(row.row)
},
getHeight() {
this.height = window.innerHeight - 190
},
toolbarButtonClickEvent(code) {
const {
insertRecords,
removeRecords,
updateRecords
} = this.$refs.xGrid.getRecordset()
switch (code) {
case 'insert':
if(this.request.dwbm==='' ||this.request.dwbm===null){
this.$message({ message: '请选择需求单位!', type: 'warning' })
return
}
this.$refs.xGrid.insertAt({
'dwbm':this.request.dwbm,
'fzry': this.name,
}, -1).then(({ row }) => {
this.$refs.xGrid.setActiveRow(row)
})
break
case 'delete':
this.$confirm('删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then((type) => {
this.$refs.xGrid.removeCheckboxRow()
})
break
case 'save':
if (removeRecords.length !== 0) {
delXqdwcjcd(removeRecords).then((response) => {
if (response.success) {
for (let i = 0; i < this.list.length; i++) {
if (removeRecords.indexOf(this.list[i]) !== -1) {
this.list.splice(i, 1)
i--
}
}
this.$message({ message: '保存成功!', type: 'success' })
const xTable = this.$refs.xGrid
xTable.loadData(this.initList())
}
})
}
if (updateRecords.length !== 0) {
updateXqdwcjcd(updateRecords).then((response) => {
if (response.success) {
const xTable = this.$refs.xGrid
xTable.loadData(this.initList())
this.$message({message: '保存成功!', type: 'success'})
}
})
}
if (insertRecords.length !== 0) {
saveXqdwcjcd(insertRecords).then((response) => {
if (response.success) {
this.list = this.list.concat(insertRecords)
const xTable = this.$refs.xGrid
xTable.loadData(this.initList())
this.$message({ message: '保存成功!', type: 'success' })
}
})
}
this.$message(
`新增 ${insertRecords.length} 条,删除 ${removeRecords.length} 条,更新 ${updateRecords.length}`
)
this.clickList = []
break
}
}
}
}
</script>
<style lang="scss" scoped >
.el-header{margin:0;padding: 5px;height:auto;
.el-input{
width: 140px;
}
.el-select{
width: 140px;
}
}
.el-container{padding: 0;margin:0;}
.el-main{padding: 0;}
.el-col{padding: 0;height: 32px;}
.el-aside{background: #fff;padding: 0}
.el-container{padding: 0}
.el-row {}
.el-row:last-child {margin-bottom: 0; }
.tableStyles{
background: #0a76a4;
}
.my-dropdown {
width: 400px;
height: 400px;
background-color: #fff;
border: 1px solid #dcdfe6;
box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.1);
font-size: 12px;
}
.mytable1{
}
.borderClass{
}
.vxe-input {
display: inline-block !important;
position: relative !important;
width: auto;
}
.el-input {
display: inline-block !important;
position: relative !important;
width: auto;
}
.keyword-lighten {
color: #000;
background-color: #FFFF00;
}
.vxe-textarea--inner {
line-height: inherit;
}
.el-form-item__label-wrap {
margin-left: 0px !important;
float: left;
}
.fontClass{
font-size: 12px;
font-weight: bold;
}
</style>

@ -441,9 +441,9 @@ export default {
return
}
getBcLQlList(this.queryParam).then((res) => {
this.list = res.data
//this.list = res.data
if (this.$refs.xGrid) {
this.$refs.xGrid.loadData(this.list)
this.$refs.xGrid.loadData(res.data)
console.log(this.list)
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save