5 Commits

13 changed files with 73 additions and 72 deletions

View File

@@ -38,7 +38,8 @@
"vue-loader-plugin": "^1.3.0", "vue-loader-plugin": "^1.3.0",
"vue-router": "^4.0.0-0", "vue-router": "^4.0.0-0",
"vuex": "^4.0.0-0", "vuex": "^4.0.0-0",
"vxe-table": "^4.1.0", "vxe-pc-ui": "^4.6.47",
"vxe-table": "^4.13.52",
"vxe-table-plugin-export-xlsx": "^2.2.1", "vxe-table-plugin-export-xlsx": "^2.2.1",
"xe-utils": "^3.4.0", "xe-utils": "^3.4.0",
"xlsx": "^0.17.3" "xlsx": "^0.17.3"

View File

@@ -31,7 +31,7 @@
.el-header { .el-header {
background-color: rgba(0, 0, 0, 0.025); background-color: rgba(0, 0, 0, 0.025);
padding: 0; padding: 0;
height: 80px; height: 60px;
} }
.app-main { .app-main {

View File

@@ -17,11 +17,11 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.system-title { .system-title {
font-size: 14px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: #fff; color: #fff;
text-align: center; text-align: center;
padding: 15px 0; padding: 5px 0;
line-height: 50px; line-height: 50px;
background-color: #4178D5; background-color: #4178D5;
} }

View File

@@ -10,7 +10,7 @@
:class="fullPath === tag.fullPath ? 'tag active' : 'tag'">{{ tag.meta.title }}</el-tag> :class="fullPath === tag.fullPath ? 'tag active' : 'tag'">{{ tag.meta.title }}</el-tag>
</div> </div>
</el-col> </el-col>
<el-col :span="4" class="text-c p-t-20"> <el-col :span="4" class="text-c p-t-10">
<div class="dropdown_box"> <div class="dropdown_box">
<el-dropdown v-if="isShow"> <el-dropdown v-if="isShow">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
@@ -97,8 +97,8 @@
background-color: #293749; background-color: #293749;
cursor: pointer; cursor: pointer;
padding: 0px 10px 0px 10px; padding: 0px 10px 0px 10px;
height: 38px !important; height: 32px !important;
line-height: 38px; line-height: 32px;
} }
.tag.active { .tag.active {

View File

@@ -280,7 +280,7 @@
</template> </template>
</vxe-column> </vxe-column>
<vxe-column v-if="item.value && item.key == 'other_fare' && data.userInfo.isall == 1" field="other_fare" <vxe-column v-if="item.value && item.key == 'other_fare' && data.userInfo.isall == 1" field="other_fare"
title="硬盘/运费/其他" :edit-render="{ autofocus: '.vxe-input--inner' }" width="130" align="center"> title="硬盘/运费/其他/DDR" :edit-render="{ autofocus: '.vxe-input--inner' }" width="130" align="center">
<template #default="{ row }"> <template #default="{ row }">
<span>¥{{ row.other_fare ? row.other_fare : '0.000' }}</span> <span>¥{{ row.other_fare ? row.other_fare : '0.000' }}</span>
</template> </template>
@@ -332,7 +332,7 @@
<vxe-column v-if="item.value && item.key == 'tco_cost' && data.userInfo.isall == 1" field="tco_cost" title="物料成本价" <vxe-column v-if="item.value && item.key == 'tco_cost' && data.userInfo.isall == 1" field="tco_cost" title="物料成本价"
width="130" align="center"> width="130" align="center">
<template #default="{ row }"> <template #default="{ row }">
<!--结构/本体+硬盘/运费/其他+电子+电源+线材+配料/配件+加工费+包材--> <!--结构/本体+硬盘/运费/其他/DDR+电子+电源+线材+配料/配件+加工费+包材-->
<span>¥{{ <span>¥{{
setNums83(( setNums83((
parseFloat(row.structure_fare ? row.structure_fare : 0) + parseFloat(row.structure_fare ? row.structure_fare : 0) +

View File

@@ -29,6 +29,8 @@ import '@/utils/iconfont.js'
import 'xe-utils' import 'xe-utils'
import VXETable from 'vxe-table' import VXETable from 'vxe-table'
import 'vxe-table/lib/style.css' import 'vxe-table/lib/style.css'
import VxeUIAll from 'vxe-pc-ui'
import 'vxe-pc-ui/lib/style.css'
import lcProject from './components/lcProject/index' import lcProject from './components/lcProject/index'
import debounce from './utils/debounce' import debounce from './utils/debounce'
configure({ configure({
@@ -59,7 +61,7 @@ app.use(ElLoading)
app.use(ElementPlus, { app.use(ElementPlus, {
locale locale
}) //需要改变的地方加入locale }) //需要改变的地方加入locale
app.use(VXETable) app.use(VXETable).use(VxeUIAll)
app.use(JxOricoTable) app.use(JxOricoTable)
app.config.globalProperties.$topNavTagRename = function (title) { app.config.globalProperties.$topNavTagRename = function (title) {

View File

@@ -162,7 +162,7 @@ export const spsdmqKeylist = {
key: 'parts_fare', key: 'parts_fare',
value: false value: false
}, { }, {
name: '硬盘/运费/其他', name: '硬盘/运费/其他/DDR',
key: 'other_fare', key: 'other_fare',
value: false value: false
}, { }, {
@@ -366,7 +366,7 @@ export const spsdmqKeylistMr = {
key: 'parts_fare', key: 'parts_fare',
value: false value: false
}, { }, {
name: '硬盘/运费/其他', name: '硬盘/运费/其他/DDR',
key: 'other_fare', key: 'other_fare',
value: false value: false
}, { }, {
@@ -716,7 +716,7 @@ export const ggdykeytable = [{
name: '辅料/配件', name: '辅料/配件',
field: 'parts_fare' field: 'parts_fare'
}, { }, {
name: '硬盘/运费/其他', name: '硬盘/运费/其他/DDR',
field: 'other_fare' field: 'other_fare'
}, { }, {
name: '加工费用', name: '加工费用',

View File

@@ -212,7 +212,7 @@ export default defineComponent({
{ type: 'col', field: 'accessories_cost', title: '配料/配件', width: '100' }, { type: 'col', field: 'accessories_cost', title: '配料/配件', width: '100' },
{ type: 'col', field: 'packing_cost', title: '包材', width: '80' }, { type: 'col', field: 'packing_cost', title: '包材', width: '80' },
{ type: 'col', field: 'process_cost', title: '加工费', width: '80' }, { type: 'col', field: 'process_cost', title: '加工费', width: '80' },
{ type: 'col', field: 'other_cost', title: '硬盘/运费其他', width: '120' }, { type: 'col', field: 'other_cost', title: '硬盘/运费/其他/DDR', width: '120' },
] ]
}, },
{ type: 'col', field: 'moq', title: 'MOQ', width: '100', align: 'center' }, { type: 'col', field: 'moq', title: 'MOQ', width: '100', align: 'center' },

View File

@@ -295,7 +295,7 @@ export default defineComponent({
{ type: 'col', field: 'acces', title: '配料/配件', width: '100' }, { type: 'col', field: 'acces', title: '配料/配件', width: '100' },
{ type: 'col', field: 'materials', title: '包材', width: '80' }, { type: 'col', field: 'materials', title: '包材', width: '80' },
{ type: 'col', field: 'processcost', title: '加工费', width: '80' }, { type: 'col', field: 'processcost', title: '加工费', width: '80' },
{ type: 'col', field: 'disk', title: '硬盘/运费其他', width: '120' }, { type: 'col', field: 'disk', title: '硬盘/运费/其他/DDR', width: '120' },
] ]
}, },
{ type: 'col', field: 'moq', title: 'MOQ', width: '100', align: 'center' }, { type: 'col', field: 'moq', title: 'MOQ', width: '100', align: 'center' },

View File

@@ -372,6 +372,7 @@ export default defineComponent({
{ type: 'selout', field: 'form_buy', title: '物料属性', width: '120', align: 'left', list: data.mtlist }, { type: 'selout', field: 'form_buy', title: '物料属性', width: '120', align: 'left', list: data.mtlist },
{ type: 'selout_1', field: 'supply_chain', title: '供应链', width: '100', align: 'left', list: data.splist }, { type: 'selout_1', field: 'supply_chain', title: '供应链', width: '100', align: 'left', list: data.splist },
{ type: 'colfdedit_69', field: 'FBARCODE', title: '69码', width: '100', align: 'left', edit: true }, { type: 'colfdedit_69', field: 'FBARCODE', title: '69码', width: '100', align: 'left', edit: true },
{ type: 'col', field: 'fnsku', title: 'FNSKU', width: '100', align: 'left' },
{ type: 'selmhout-allow', field: 'supplier', title: '默认供应商', width: '140', align: 'left', list: data.dsplist }, { type: 'selmhout-allow', field: 'supplier', title: '默认供应商', width: '140', align: 'left', list: data.dsplist },
{ type: 'colfdedit-allow-price', field: 'purchase_price', title: '采购价格', width: '120', align: 'left', edit: true }, { type: 'colfdedit-allow-price', field: 'purchase_price', title: '采购价格', width: '120', align: 'left', edit: true },
{ type: 'selmhout', field: 'FUseOrgId', title: '默认供应组织', width: '140', align: 'left', list: data.dspzlist }, { type: 'selmhout', field: 'FUseOrgId', title: '默认供应组织', width: '140', align: 'left', list: data.dspzlist },
@@ -409,7 +410,7 @@ export default defineComponent({
{ type: 'col', field: 'accessories_cost', title: '配料/配件', width: '100' }, { type: 'col', field: 'accessories_cost', title: '配料/配件', width: '100' },
{ type: 'col', field: 'packing_cost', title: '包材', width: '80' }, { type: 'col', field: 'packing_cost', title: '包材', width: '80' },
{ type: 'col', field: 'process_cost', title: '加工费', width: '80' }, { type: 'col', field: 'process_cost', title: '加工费', width: '80' },
{ type: 'col', field: 'other_cost', title: '硬盘/运费其他', width: '120' }, { type: 'col', field: 'other_cost', title: '硬盘/运费/其他/DDR', width: '120' },
] ]
}, },
{ type: 'col', field: 'moq', title: 'MOQ', width: '100', align: 'center' }, { type: 'col', field: 'moq', title: 'MOQ', width: '100', align: 'center' },

View File

@@ -2,7 +2,7 @@
<el-main class="bg_white"> <el-main class="bg_white">
<div class="m-t-10 table_90 border-r-10 text-black"> <div class="m-t-10 table_90 border-r-10 text-black">
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8" style="align-items: center;display: flex;flex-direction: row;">
<!-- <el-button type="primary" size="mini" @click="getList(1)">搜索</el-button> <!-- <el-button type="primary" size="mini" @click="getList(1)">搜索</el-button>
<el-button type="primary" size="mini" @click="reset()">重置</el-button>--> <el-button type="primary" size="mini" @click="reset()">重置</el-button>-->
<el-button type="primary" size="mini" @click="save">保存修改</el-button> <el-button type="primary" size="mini" @click="save">保存修改</el-button>
@@ -23,18 +23,9 @@
</div> </div>
<!--表格--> <!--表格-->
<div class="bg_white table_90 m-t-10 border-r-10 text-black f-12"> <div class="bg_white table_90 m-t-10 border-r-10 text-black f-12">
<vxe-table border resizable show-overflow ref="xTable" height="700" :scroll-x="{ enabled: false }" <vxe-table border resizable show-overflow :height="tableHeight" :scroll-x="{ enabled: false }"
:scroll-y="{ enabled: false }" :header-row-style="header_style" :data="tableData" :edit-config="editConfig"> :scroll-y="{ enabled: false }" :header-row-style="header_style" :data="tableData" :edit-config="editConfig">
<vxe-colgroup title="基本信息" header-align="center" fixed="left" resizable> <vxe-colgroup title="基本信息" header-align="center" fixed="left" resizable>
<!-- <vxe-colgroup title="品牌" header-align="center">
<vxe-column field="name" width="100">
<template #header>
<el-select v-model="brand_name" placeholder="" @change="selectSKU()" clearable filterable size="mini">
<el-option v-for="(option, index) in brand_list" :key="index"></el-option>
</el-select>
</template>
</vxe-column>
</vxe-colgroup>-->
<vxe-column field="picture" title="图片" width="80" header-align="center" align="center" class="position-r"> <vxe-column field="picture" title="图片" width="80" header-align="center" align="center" class="position-r">
<template #default="{ row }"> <template #default="{ row }">
<el-upload :action="api_upload_url" :with-credentials="true" :on-success="function (res, file, file_list) { <el-upload :action="api_upload_url" :with-credentials="true" :on-success="function (res, file, file_list) {
@@ -163,37 +154,6 @@
<vxe-input v-model="row.overseas_minimum_activity_price" type="text"></vxe-input> <vxe-input v-model="row.overseas_minimum_activity_price" type="text"></vxe-input>
</template> </template>
</vxe-column> </vxe-column>
<!-- <vxe-colgroup title="供应信息" header-align="center">
<vxe-colgroup title="供应链" header-align="center">
<vxe-column field="sex" width="100">
<template #header>
<el-select v-model="brand_name" placeholder="" @change="selectSKU()" clearable filterable size="mini">
<el-option v-for="(option, index) in brand_list" :key="index"></el-option>
</el-select>
</template>
</vxe-column>
</vxe-colgroup>
<vxe-colgroup title="是否211" header-align="center">
<vxe-column field="sex" width="80">
<template #header>
<el-select v-model="brand_name" placeholder="" @change="selectSKU()" clearable filterable size="mini">
<el-option value="1" label="是"></el-option>
<el-option value="2" label="否"></el-option>
</el-select>
</template>
</vxe-column>
</vxe-colgroup>
<vxe-colgroup title="供应商" header-align="center">
<vxe-column field="sex" width="200">
<template #header>
<el-select v-model="brand_name" placeholder="" @change="selectSKU()" clearable filterable size="mini">
<el-option v-for="(option, index) in supplier_list" :key="index"></el-option>
</el-select>
</template>
</vxe-column>
</vxe-colgroup>
</vxe-colgroup>-->
<!-- <vxe-column field="cost" title="产品成本(含税)" width="80" header-align="center" align="right"></vxe-column> -->
<vxe-colgroup title="产品成本构成" header-align="center" v-allow="'NewCost.NewCostFinance'"> <vxe-colgroup title="产品成本构成" header-align="center" v-allow="'NewCost.NewCostFinance'">
<vxe-column field="clinker_cost" title="结构/本体" width="70" header-align="center" align="right" <vxe-column field="clinker_cost" title="结构/本体" width="70" header-align="center" align="right"
:edit-render="{ autofocus: '.vxe-input--inner' }"> :edit-render="{ autofocus: '.vxe-input--inner' }">
@@ -237,7 +197,7 @@
<vxe-input v-model="row.process_cost" type="text"></vxe-input> <vxe-input v-model="row.process_cost" type="text"></vxe-input>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column field="other_cost" title="硬盘/运费其他" width="80" header-align="center" align="right" <vxe-column field="other_cost" title="硬盘/运费/其他/DDR" width="80" header-align="center" align="right"
:edit-render="{ autofocus: '.vxe-input--inner' }"> :edit-render="{ autofocus: '.vxe-input--inner' }">
<template #edit="{ row }"> <template #edit="{ row }">
<vxe-input v-model="row.other_cost" type="text"></vxe-input> <vxe-input v-model="row.other_cost" type="text"></vxe-input>
@@ -362,16 +322,20 @@
</vxe-colgroup> </vxe-colgroup>
<vxe-column field="FITEMPPROPERTY" title="物料属性" width="80" header-align="center" align="right"></vxe-column> <vxe-column field="FITEMPPROPERTY" title="物料属性" width="80" header-align="center" align="right"></vxe-column>
<vxe-column field="bom_version" title="BOM版本" width="140" header-align="center" align="right"></vxe-column> <vxe-column field="bom_version" title="BOM版本" width="140" header-align="center" align="right"></vxe-column>
<vxe-column field="remark1" title="绩效提成经营分析品线(一级)" width="80" header-align="center" align="right" <vxe-column field="remark1" title="绩效提成经营分析品线(一级)" width="80" header-align="center" align="right">
:edit-render="{ autofocus: '.vxe-input--inner' }"> <template #default="{ row }">
<template #edit="{ row }"> {{ row.remark1 }}
<vxe-input v-model="row.remark1" type="text"></vxe-input>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column field="remark2" title="绩效提成经营分析品线(二级)" width="80" header-align="center" align="right" <vxe-column field="remark2" title="绩效提成经营分析品线(二级)" width="100" header-align="center" align="right"
:edit-render="{ autofocus: '.vxe-input--inner' }"> :edit-render="{}">
<template #edit="{ row }"> <template #default="{ row }">
<vxe-input v-model="row.remark2" type="text"></vxe-input> {{ row.remark2}}
</template>
<template #edit="{ row, $rowIndex }">
<vxe-select v-model="row.remark2" @change="val => updateRemark(val, $rowIndex)" clearable>
<vxe-option v-for="item in remark_level" :key="item.remark_two" :value="item.remark_two" :label="item.remark_two"></vxe-option>
</vxe-select>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column field="remark3" title="业绩/回款统计品线" width="80" header-align="center" align="right" <vxe-column field="remark3" title="业绩/回款统计品线" width="80" header-align="center" align="right"
@@ -464,7 +428,9 @@ export default {
old_value: '', old_value: '',
enlargeImgShow: false, enlargeImgShow: false,
enlargeImg: '', enlargeImg: '',
top: '' top: '',
tableHeight: 700, // 表格高度,会动态计算
remark_level: [] // 绩效提成经营分析品线等级下拉选择
} }
}, },
computed: { computed: {
@@ -484,7 +450,36 @@ export default {
created () { created () {
this.getList() this.getList()
}, },
mounted() {
// 组件挂载后计算表格高度
this.calculateTableHeight();
// 监听窗口大小变化,动态调整表格高度
window.addEventListener('resize', this.calculateTableHeight);
},
beforeDestroy() {
// 组件销毁前移除事件监听
window.removeEventListener('resize', this.calculateTableHeight);
},
methods: { methods: {
updateRemark(val, rowIndex){
// 根据选中的二级品线查找对应的一级品线
const item = this.remark_level.find(i => i && i.remark_two === val.value);
this.tableData[rowIndex].remark1 = val.value==null|| !val.value?'' :item.remark_one;
},
// 计算表格自适应高度
calculateTableHeight() {
// 获取浏览器窗口高度
const windowHeight = window.innerHeight;
// 获取表格容器上方元素的高度(这里需要根据实际情况调整)
// 假设上方操作栏和标题区域大约占用200px
const headerHeight = 200;
// 计算表格可用高度,减去一些边距和预留空间
this.tableHeight = windowHeight - headerHeight - 30; // 30px作为底部边距预留
// 确保表格高度不会太小
if (this.tableHeight < 300) {
this.tableHeight = 300;
}
},
enlarge (e, row) { enlarge (e, row) {
console.log(e) console.log(e)
this.enlargeImg = row.picture this.enlargeImg = row.picture
@@ -520,6 +515,7 @@ export default {
this.form_buy = res.data.form_buy this.form_buy = res.data.form_buy
this.fast = res.data.fast this.fast = res.data.fast
this.opd_list = res.data.opd this.opd_list = res.data.opd
this.remark_level = res.data.remark_level
this.tableData.forEach(item => { this.tableData.forEach(item => {
item.is_show = 1 item.is_show = 1
}) })
@@ -611,10 +607,8 @@ export default {
}) })
} }
}) })
.finally(() => {
listLoading.close()
})
}, },
//同步ERP //同步ERP
synchronizeErp () { synchronizeErp () {
const listLoading = ElLoading.service({ const listLoading = ElLoading.service({

View File

@@ -190,6 +190,9 @@ const data = reactive({
}, { }, {
label: '不停产促销', label: '不停产促销',
value: 3 value: 3
},{
label: '战略产品特价',
value: 4
} }
],//分类下拉 ],//分类下拉
statelist: [ statelist: [

View File

@@ -175,7 +175,7 @@
</template> </template>
</vxe-column> </vxe-column>
<vxe-column title="硬盘/运费/其他" v-if="item.value && item.key == 'other_fare'" width="120" align="left"> <vxe-column title="硬盘/运费/其他/DDR" v-if="item.value && item.key == 'other_fare'" width="120" align="left">
<template #default="{ row }"> <template #default="{ row }">
<span>{{ row.sku.other_fare }}</span> <span>{{ row.sku.other_fare }}</span>
</template> </template>