Merge remote-tracking branch 'origin/main'

product
chuang 2 years ago
commit 5581a01ccc

@ -1,307 +1,312 @@
<template> <template>
<div class="JNPF-common-layout"> <div class="JNPF-common-layout">
<div class="JNPF-common-layout-center"> <div class="JNPF-common-layout-center">
<el-row class="JNPF-common-search-box" :gutter="16"> <el-row class="JNPF-common-search-box" :gutter="16">
<el-form @submit.native.prevent> <el-form @submit.native.prevent>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="物料编码"> <el-form-item label="物料编码">
<el-input v-model="query.itemCode" placeholder="请输入" clearable> </el-input> <el-input v-model="query.itemCode" placeholder="请输入" clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="物料名称"> <el-form-item label="物料名称">
<el-input v-model="query.itemName" placeholder="请输入" clearable> </el-input> <el-input v-model="query.itemName" placeholder="请输入" clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button> <el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button> <el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-form> </el-form>
</el-row> </el-row>
<div class="JNPF-common-layout-main JNPF-flex-main"> <div class="JNPF-common-layout-main JNPF-flex-main">
<div class="JNPF-common-head"> <div class="JNPF-common-head">
<div> <div>
<el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()"> <el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()">
</el-button> </el-button>
<el-button type="text" icon="el-icon-download" @click="exportData()" >导出 <el-button type="text" icon="el-icon-download" @click="exportData()">
</el-button> </el-button>
<el-button type="text" icon="el-icon-delete" @click="handleBatchRemoveDel()" >批量删除 <el-button type="text" icon="el-icon-download" @click="">导入
</el-button> </el-button>
</div> <el-button type="text" icon="el-icon-delete" @click="handleBatchRemoveDel()">
<div class="JNPF-common-head-right"> </el-button>
<el-tooltip effect="dark" content="刷新" placement="top"> </div>
<el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false" <div class="JNPF-common-head-right">
@click="reset()"/> <el-tooltip effect="dark" content="刷新" placement="top">
</el-tooltip> <el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false"
<screenfull isContainer/> @click="reset()"/>
</div> </el-tooltip>
</div> <screenfull isContainer/>
<JNPF-table v-loading="listLoading" :data="list" @sort-change='sortChange' has-c @selection-change="handleSelectionChange"> </div>
<el-table-column prop="itemCode" label="物料编码" width="0" align="left"
/>
<el-table-column prop="itemName" label="物料名称" width="0" align="left"
/>
<el-table-column prop="description" label="物料说明" width="0" align="left"
/>
<el-table-column label="主单位名称" width="0" prop="primaryUnitOmeasure" algin="left"
>
<template slot-scope="scope">
{{ scope.row.primaryUnitOmeasure | dynamicText(primaryUnitOmeasureOptions) }}
</template>
</el-table-column>
<el-table-column label="是否可采购" width="0" prop="purchaseFlag" algin="left"
>
<template slot-scope="scope">
{{ scope.row.purchaseFlag | dynamicText(purchaseFlagOptions) }}
</template>
</el-table-column>
<el-table-column label="是否可销售 " width="0" prop="salesFlag" algin="left"
>
<template slot-scope="scope">
{{ scope.row.salesFlag | dynamicText(salesFlagOptions) }}
</template>
</el-table-column>
<el-table-column prop="outArea" label="默认出库区" width="0" align="left"
/>
<el-table-column prop="inArea" label="默认入库区" width="0" align="left"
/>
<el-table-column prop="standardCost" label="标准成本" width="0" align="left"
/>
<el-table-column prop="financial" label="财务类别" width="0" align="left"
/>
<el-table-column prop="financialName" label="类别名称" width="0" align="left"
/>
<el-table-column prop="itemId" label="ERP物料ID" width="0" align="left"
/>
<el-table-column prop="errorMessage" label="错误信息" width="0" align="left"
/>
<el-table-column label="生效状态" width="0" prop="effectiveStatus" algin="left"
>
<template slot-scope="scope">
{{ scope.row.effectiveStatus | dynamicText(effectiveStatusOptions) }}
</template>
</el-table-column>
<el-table-column label="操作" fixed="right"
width="100" >
<template slot-scope="scope">
<el-button type="text"
@click="addOrUpdateHandle(scope.row.id)" >编辑
</el-button>
<el-button type="text" class="JNPF-table-delBtn" @click="handleDel(scope.row.id)">
</el-button>
</template>
</el-table-column>
</JNPF-table>
<pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize" @pagination="initData"/>
</div>
</div> </div>
<JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh"/> <JNPF-table v-loading="listLoading" :data="list" @sort-change='sortChange' has-c :hasNO="false"
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download"/> @selection-change="handleSelectionChange" border>
<Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible=false"/> <el-table-column type="index" width="50" label="序号" fixed="left" align="center" />
<el-table-column prop="itemCode" label="物料编码" width="0" align="left"
/>
<el-table-column prop="itemName" label="物料名称" width="0" align="left"
/>
<el-table-column prop="description" label="物料说明" width="0" align="left"
/>
<el-table-column label="主单位名称" width="0" prop="primaryUnitOmeasure" algin="left"
>
<template slot-scope="scope">
{{ scope.row.primaryUnitOmeasure | dynamicText(primaryUnitOmeasureOptions) }}
</template>
</el-table-column>
<el-table-column label="是否可采购" width="0" prop="purchaseFlag" algin="left"
>
<template slot-scope="scope">
{{ scope.row.purchaseFlag | dynamicText(purchaseFlagOptions) }}
</template>
</el-table-column>
<el-table-column label="是否可销售 " width="0" prop="salesFlag" algin="left"
>
<template slot-scope="scope">
{{ scope.row.salesFlag | dynamicText(salesFlagOptions) }}
</template>
</el-table-column>
<el-table-column prop="outArea" label="默认出库区" width="0" align="left"
/>
<el-table-column prop="inArea" label="默认入库区" width="0" align="left"
/>
<el-table-column prop="standardCost" label="标准成本" width="0" align="left"
/>
<el-table-column prop="financial" label="财务类别" width="0" align="left"
/>
<el-table-column prop="financialName" label="类别名称" width="0" align="left"
/>
<el-table-column prop="itemId" label="ERP物料ID" width="0" align="left"
/>
<el-table-column prop="errorMessage" label="错误信息" width="0" align="left"
/>
<el-table-column label="生效状态" width="0" prop="effectiveStatus" algin="left"
>
<template slot-scope="scope">
{{ scope.row.effectiveStatus | dynamicText(effectiveStatusOptions) }}
</template>
</el-table-column>
<el-table-column label="操作" fixed="right"
width="100">
<template slot-scope="scope">
<el-button type="text"
@click="addOrUpdateHandle(scope.row.id)">编辑
</el-button>
<el-button type="text" class="JNPF-table-delBtn" @click="handleDel(scope.row.id)">
</el-button>
</template>
</el-table-column>
</JNPF-table>
<pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize"
@pagination="initData"/>
</div>
</div> </div>
<JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh"/>
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download"/>
<Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible=false"/>
</div>
</template> </template>
<script> <script>
import request from '@/utils/request' import request from '@/utils/request'
import {getDictionaryDataSelector} from '@/api/systemData/dictionary' import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
import JNPFForm from './Form' import JNPFForm from './Form'
import ExportBox from './ExportBox' import ExportBox from './ExportBox'
import {getDataInterfaceRes} from '@/api/systemData/dataInterface' import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
import Detail from './Detail' import Detail from './Detail'
export default { export default {
components: {JNPFForm, ExportBox,Detail}, components: { JNPFForm, ExportBox, Detail },
data() { data() {
return { return {
detailVisible: false, detailVisible: false,
query: { query: {
itemCode:undefined, itemCode: undefined,
itemName:undefined, itemName: undefined
},
treeProps: {
children: 'children',
label: 'fullName',
value: 'id'
},
list: [],
listLoading: true,
multipleSelection: [], total: 0,
listQuery: {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "creatorTime",
},
formVisible: false,
exportBoxVisible: false,
columnList: [
{prop: 'itemCode', label: '物料编码'},
{prop: 'itemName', label: '物料名称'},
{prop: 'description', label: '物料说明'},
{prop: 'primaryUnitOmeasure', label: '主单位名称'},
{prop: 'purchaseFlag', label: '是否可采购'},
{prop: 'salesFlag', label: '是否可销售 '},
{prop: 'outArea', label: '默认出库区'},
{prop: 'inArea', label: '默认入库区'},
{prop: 'standardCost', label: '标准成本'},
{prop: 'financial', label: '财务类别'},
{prop: 'financialName', label: '类别名称'},
{prop: 'itemId', label: 'ERP物料ID'},
{prop: 'errorMessage', label: '错误信息'},
{prop: 'effectiveStatus', label: '生效状态'},
],
primaryUnitOmeasureOptions:[{"fullName":"千克","id":"1"},{"fullName":"吨","id":"0"}],
primaryUnitOmeasureProps:{"label":"fullName","value":"id"},
purchaseFlagOptions:[{"fullName":"是","id":"Y"},{"fullName":"否","id":"N"}],
purchaseFlagProps:{"label":"fullName","value":"id"},
salesFlagOptions:[{"fullName":"是","id":"Y"},{"fullName":"否","id":"N"}],
salesFlagProps:{"label":"fullName","value":"id"},
effectiveStatusOptions:[{"fullName":"生效","id":"Y"},{"fullName":"不生效","id":"N"}],
effectiveStatusProps:{"label":"fullName","value":"id"},
}
}, },
computed: { treeProps: {
menuId() { children: 'children',
return this.$route.meta.modelId || '' label: 'fullName',
} value: 'id'
}, },
created() { list: [],
this.initData() listLoading: true,
multipleSelection: [], total: 0,
listQuery: {
currentPage: 1,
pageSize: 20,
sort: 'desc',
sidx: 'creatorTime'
}, },
methods: { formVisible: false,
goDetail(id){ exportBoxVisible: false,
this.detailVisible = true columnList: [
this.$nextTick(() => { { prop: 'itemCode', label: '物料编码' },
this.$refs.Detail.init(id) { prop: 'itemName', label: '物料名称' },
}) { prop: 'description', label: '物料说明' },
}, { prop: 'primaryUnitOmeasure', label: '主单位名称' },
sortChange({column, prop, order}) { { prop: 'purchaseFlag', label: '是否可采购' },
this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc' { prop: 'salesFlag', label: '是否可销售 ' },
this.listQuery.sidx = !order ? '' : prop { prop: 'outArea', label: '默认出库区' },
this.initData() { prop: 'inArea', label: '默认入库区' },
}, { prop: 'standardCost', label: '标准成本' },
initData() { { prop: 'financial', label: '财务类别' },
this.listLoading = true; { prop: 'financialName', label: '类别名称' },
let _query = { { prop: 'itemId', label: 'ERP物料ID' },
...this.listQuery, { prop: 'errorMessage', label: '错误信息' },
...this.query, { prop: 'effectiveStatus', label: '生效状态' }
menuId:this.menuId ],
}; primaryUnitOmeasureOptions: [{ 'fullName': '千克', 'id': '1' }, { 'fullName': '吨', 'id': '0' }],
request({ primaryUnitOmeasureProps: { 'label': 'fullName', 'value': 'id' },
url: `/api/example/Material/getList`, purchaseFlagOptions: [{ 'fullName': '是', 'id': 'Y' }, { 'fullName': '否', 'id': 'N' }],
method: 'post', purchaseFlagProps: { 'label': 'fullName', 'value': 'id' },
data: _query salesFlagOptions: [{ 'fullName': '是', 'id': 'Y' }, { 'fullName': '否', 'id': 'N' }],
}).then(res => { salesFlagProps: { 'label': 'fullName', 'value': 'id' },
var _list =[]; effectiveStatusOptions: [{ 'fullName': '生效', 'id': 'Y' }, { 'fullName': '不生效', 'id': 'N' }],
for(let i=0;i<res.data.list.length;i++){ effectiveStatusProps: { 'label': 'fullName', 'value': 'id' }
let _data = res.data.list[i]; }
_list.push(_data) },
} computed: {
this.list = _list menuId() {
this.total = res.data.pagination.total return this.$route.meta.modelId || ''
}
},
created() {
this.initData()
},
methods: {
goDetail(id) {
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(id)
})
},
sortChange({ column, prop, order }) {
this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
this.listQuery.sidx = !order ? '' : prop
this.initData()
},
initData() {
this.listLoading = true
let _query = {
...this.listQuery,
...this.query,
menuId: this.menuId
}
request({
url: `/api/example/Material/getList`,
method: 'post',
data: _query
}).then(res => {
var _list = []
for (let i = 0; i < res.data.list.length; i++) {
let _data = res.data.list[i]
_list.push(_data)
}
this.list = _list
this.total = res.data.pagination.total
this.listLoading = false this.listLoading = false
}) })
}, },
handleDel(id) { handleDel(id) {
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
request({ request({
url: `/api/example/Material/${id}`, url: `/api/example/Material/${id}`,
method: 'DELETE' method: 'DELETE'
}).then(res => { }).then(res => {
this.$message({ this.$message({
type: 'success', type: 'success',
message: res.msg, message: res.msg,
onClose: () => { onClose: () => {
this.initData()
}
});
})
}).catch(() => {
});
},
handleSelectionChange(val) {
const res = val.map(item => item.id)
this.multipleSelection = res
},
handleBatchRemoveDel() {
if (!this.multipleSelection.length) {
this.$message({
type: 'error',
message: '请选择一条数据',
duration: 1500,
})
return
}
const ids = this.multipleSelection.join()
this.$confirm('您确定要删除这些数据吗, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/example/Material/batchRemove/${ids}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {
})
},
addOrUpdateHandle(id, isDetail) {
this.formVisible = true
this.$nextTick(() => {
this.$refs.JNPFForm.init(id, isDetail)
})
},
exportData() {
this.exportBoxVisible = true
this.$nextTick(() => {
this.$refs.ExportBox.init(this.columnList)
})
},
download(data) {
let query = {...data, ...this.listQuery, ...this.query,menuId:this.menuId}
request({
url: `/api/example/Material/Actions/Export`,
method: 'GET',
data: query
}).then(res => {
if (!res.data.url) return
this.jnpf.downloadFile(res.data.url)
this.$refs.ExportBox.visible = false
this.exportBoxVisible = false
})
},
search() {
this.listQuery = {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "creatorTime",
}
this.initData() this.initData()
}, }
refresh(isrRefresh) { })
this.formVisible = false })
if (isrRefresh) this.reset() }).catch(() => {
}, })
reset() { },
for (let key in this.query) { handleSelectionChange(val) {
this.query[key] = undefined const res = val.map(item => item.id)
} this.multipleSelection = res
this.search() },
} handleBatchRemoveDel() {
if (!this.multipleSelection.length) {
this.$message({
type: 'error',
message: '请选择一条数据',
duration: 1500
})
return
}
const ids = this.multipleSelection.join()
this.$confirm('您确定要删除这些数据吗, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/example/Material/batchRemove/${ids}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
})
})
}).catch(() => {
})
},
addOrUpdateHandle(id, isDetail) {
this.formVisible = true
this.$nextTick(() => {
this.$refs.JNPFForm.init(id, isDetail)
})
},
exportData() {
this.exportBoxVisible = true
this.$nextTick(() => {
this.$refs.ExportBox.init(this.columnList)
})
},
download(data) {
let query = { ...data, ...this.listQuery, ...this.query, menuId: this.menuId }
request({
url: `/api/example/Material/Actions/Export`,
method: 'GET',
data: query
}).then(res => {
if (!res.data.url) return
this.jnpf.downloadFile(res.data.url)
this.$refs.ExportBox.visible = false
this.exportBoxVisible = false
})
},
search() {
this.listQuery = {
currentPage: 1,
pageSize: 20,
sort: 'desc',
sidx: 'creatorTime'
}
this.initData()
},
refresh(isrRefresh) {
this.formVisible = false
if (isrRefresh) this.reset()
},
reset() {
for (let key in this.query) {
this.query[key] = undefined
} }
this.search()
}
} }
}
</script> </script>

Loading…
Cancel
Save