<template>
|
<div class="page-view" :class="{ setHeight: isinventory || islistingrules || isReorder }">
|
<el-form
|
ref="form"
|
:model="tableList"
|
:show-message="false"
|
label-position="right"
|
:class="{ setHeight: isinventory || islistingrules || isReorder }"
|
>
|
<el-table
|
:data="tableList.tableData"
|
border
|
style="width: 100%"
|
:height="'calc(100% - 0px)'"
|
:class="{ setHeight: isinventory || islistingrules || isReorder }"
|
:header-cell-style="{ background: '#f1f3f8', color: '#000009' }"
|
:row-class-name="tableRowClassName"
|
@row-click="tableRowClick"
|
>
|
<el-table-column v-if="tableList.selectBox" type="selection" width="40" align="center"> </el-table-column>
|
<el-table-column v-if="tableList.selectIndex" type="index" label="序号" width="50"> </el-table-column>
|
<el-table-column
|
v-for="(item, i) in tableList.tableColumn"
|
:key="i"
|
:prop="item.prop"
|
:label="item.label"
|
:width="item.width"
|
:min-width="item.min"
|
align="center"
|
>
|
<!-- 表头样式 -->
|
<template slot="header">
|
<span v-if="item.isRequird" style="color: #f56c6c">*</span>
|
<span>{{ item.label }}</span>
|
</template>
|
<!-- column样式 -->
|
<template slot-scope="scope">
|
<template v-if="!detailEnter">
|
<el-form-item
|
v-if="item.input"
|
label=" "
|
:prop="'tableData.' + scope.$index + '.' + item.prop"
|
:rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
|
>
|
<div @click.stop="commoInput">
|
<el-input
|
v-model.trim="scope.row[item.prop]"
|
maxlength="50"
|
size="mini"
|
@change="
|
(val) => {
|
commonInputChange(val, item.prop, scope.row)
|
}
|
"
|
></el-input>
|
</div>
|
</el-form-item>
|
<!-- <el-form-item
|
v-else-if="item.productName"
|
label=" "
|
:prop="'tableData.' + scope.$index + '.' + item.prop"
|
>
|
<div class="custom-name">
|
<SimpleSearchInput
|
:echoValue="scope.row[item.prop]"
|
:echoName="scope.row[item.prop]"
|
checkedNum="1"
|
:clearable="true"
|
@select-user="selProductNameClick"
|
>
|
</SimpleSearchInput>
|
</div>
|
</el-form-item> -->
|
<el-form-item
|
v-else-if="item.productName"
|
label=" "
|
:prop="'tableData.' + scope.$index + '.' + item.prop"
|
>
|
<div class="custom-name">
|
<el-autocomplete
|
v-model="scope.row[item.prop]"
|
:fetch-suggestions="
|
(queryString, callback) => {
|
querySearchAsync(queryString, callback, 'product')
|
}
|
"
|
value-key="name"
|
:disabled="!isOperate"
|
size="mini"
|
@select="
|
(val) => {
|
handleSelectClient(val, item.prop, scope.row,scope)
|
}
|
"
|
></el-autocomplete>
|
|
<div
|
v-if="scope.row[item.prop] && scope.row[item.prop].length > 0 && isOperate"
|
class="common-select-btn"
|
@click="handleEditClient(scope, item.prop)"
|
>
|
<i class="el-icon-edit" title="编辑"></i>
|
</div>
|
<div
|
v-if="scope.row[item.prop] && scope.row[item.prop].length > 0 && isOperate"
|
class="common-select-btn"
|
@click="clearupClient(scope)"
|
>
|
<i class="el-icon-remove-outline" title="清除"></i>
|
</div>
|
<div class="common-select-btn" v-else @click="selClientClick(scope, item.prop)">
|
<i class="el-icon-circle-plus-outline" title="选择"></i>
|
</div>
|
</div>
|
</el-form-item>
|
<el-form-item
|
v-else-if="item.date"
|
label=" "
|
:prop="'tableData.' + scope.$index + '.' + item.prop"
|
:rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
|
>
|
<span v-if="scope.row.isEdit">{{ scope.row[item.prop] }}</span>
|
<el-date-picker v-else v-model="scope.row[item.prop]" type="date" size="mini" style="width: 100%">
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item
|
v-else-if="item.inputNumber"
|
label=" "
|
:prop="'tableData.' + scope.$index + '.' + item.prop"
|
:rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
|
>
|
<div @click.stop="commoInput">
|
<el-input-number
|
v-model="scope.row[item.prop]"
|
placeholder=""
|
:min="0"
|
:controls="false"
|
size="mini"
|
style="width: 100%; margin-right: 5px"
|
@change="
|
(val) => {
|
commonInputChange(val, item.prop, scope.row)
|
}
|
"
|
></el-input-number>
|
</div>
|
</el-form-item>
|
<el-form-item
|
v-else-if="item.inputFloat||item.inputFloatValue"
|
label=" "
|
:prop="'tableData.' + scope.$index + '.' + item.prop"
|
:rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
|
>
|
<span v-if="scope.row.isEdit||(item.inputFloatValue&&!scope.row[item.isInputFloat])">{{ scope.row[item.prop] }}</span>
|
<div v-else @click.stop="commoInput">
|
<el-input-number
|
v-model="scope.row[item.prop]"
|
placeholder=""
|
:precision="2"
|
:controls="false"
|
size="mini"
|
style="width: 100%; margin-right: 5px"
|
:min="item.prop === 'minInventory' ? 0 : 0"
|
@change="
|
(val) => {
|
commonInputChange(val, item.prop, scope.row)
|
}
|
"
|
></el-input-number>
|
</div>
|
</el-form-item>
|
<el-form-item v-else-if="item.select" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
|
<div class="custom-name">
|
<el-select
|
v-model="scope.row[item.prop]"
|
placeholder="请选择"
|
size="mini"
|
style="width: 63%"
|
@change="selCommonClick"
|
>
|
<el-option v-for="(item, index) in selOptions" :key="index" :label="item.name" :value="item">
|
</el-option>
|
</el-select>
|
</div>
|
</el-form-item>
|
<!-- 位置 -->
|
<el-form-item v-else-if="item.location" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
|
<div class="custom-name">
|
<span v-if="scope.row.isEdit || scope.row.editable">{{
|
scope.row[item.prop]?.label ?? scope.row[item.prop]
|
}}</span>
|
<el-select
|
v-else
|
v-model="scope.row[item.prop]"
|
placeholder="请选择"
|
size="mini"
|
filterable
|
style="width: 80%"
|
@change="
|
(val) => {
|
selLocationClick(val, item.prop,scope.row)
|
}
|
"
|
>
|
<el-option
|
v-for="(item, index) in selLocationOptions"
|
:key="index"
|
:label="item.jointName"
|
:value="{ value: item.id, label: item.jointName }"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
</el-form-item>
|
<!-- 产品到达位置 -->
|
<el-form-item v-else-if="item.toLocation" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
|
<div class="custom-name">
|
<span v-if="scope.row.isEdit || scope.row.editable">{{
|
scope.row[item.prop]?.label ?? scope.row[item.prop]
|
}}</span>
|
<el-select
|
v-else
|
v-model="scope.row[item.prop]"
|
placeholder="请选择"
|
size="mini"
|
filterable
|
style="width: 80%"
|
@change="
|
(val) => {
|
selLocationClick(val, item.prop, scope.row)
|
}
|
"
|
>
|
<el-option
|
v-for="(item, index) in selToLocationOptions"
|
:key="index"
|
:label="item.jointName"
|
:value="{ value: item.id, label: item.jointName }"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
</el-form-item>
|
<!-- 子位置 -->
|
<el-form-item
|
v-else-if="item.sonLocation"
|
label=" "
|
:prop="'tableData.' + scope.$index + '.' + item.prop"
|
>
|
<div class="custom-name">
|
<span v-if="scope.row.isEdit || scope.row.editable">{{
|
scope.row[item.prop]?.label ?? scope.row[item.prop]
|
}}</span>
|
<el-select
|
v-else
|
v-model="scope.row[item.prop]"
|
placeholder="请选择"
|
size="mini"
|
style="width: 80%"
|
@change="
|
(val) => {
|
selSonLocationClick(val, item.prop,scope.row,scope)
|
}
|
"
|
>
|
<el-option
|
v-for="(item, index) in selSonLocationOptions"
|
:key="index"
|
:label="item.jointName"
|
:value="{ value: item.id, label: item.jointName }"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
</el-form-item>
|
<!-- 重订货规则-位置 -->
|
<el-form-item
|
v-else-if="item.defaultLocation"
|
label=" "
|
:prop="'tableData.' + scope.$index + '.' + item.prop"
|
>
|
<div class="custom-name">
|
<el-select
|
v-if="!scope.row.isEdit && scope.row.isOrder"
|
v-model="locacionName"
|
placeholder="请选择"
|
size="mini"
|
filterable
|
style="width: 80%"
|
@change="
|
(val) => {
|
selLocationClick(val, item.prop, scope.row)
|
}
|
"
|
>
|
<el-option
|
v-for="(ite, index) in selLocationOptions"
|
:key="index"
|
:label="ite.name"
|
:value="{ value: ite.id, label: ite.name }"
|
>
|
</el-option>
|
</el-select>
|
<span v-else-if="scope.row.isEdit || scope.row.editable">{{
|
scope.row[item.prop]?.label ?? scope.row[item.prop]
|
}}</span>
|
</div>
|
</el-form-item>
|
<!-- 产品 -->
|
<el-form-item v-else-if="item.product" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
|
<div class="custom-name">
|
<span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row.productName }}</span>
|
<template v-else>
|
<SimpleSearchInput
|
v-model="scope.row[item.prop]"
|
:echoValue="scope.row[item.prop]"
|
:echoName="scope.row[item.prop]"
|
checkedNum="1"
|
:clearable="true"
|
@select-user="
|
(val) => {
|
selProductClick(val, scope.row)
|
}
|
"
|
>
|
</SimpleSearchInput>
|
</template>
|
</div>
|
</el-form-item>
|
<!-- 从 -->
|
<el-form-item
|
v-else-if="item.formLocation"
|
label=" "
|
:prop="'tableData.' + scope.$index + '.' + item.prop"
|
>
|
<div class="custom-name">
|
<span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row.formLocation }}</span>
|
<el-autocomplete
|
v-else
|
style="width: 100%"
|
v-model="scope.row.productCategory"
|
@focus="productTypeFocus"
|
:fetch-suggestions="
|
(queryString, callback) => {
|
querySearchAsync(queryString, callback, 'formLocation')
|
}
|
"
|
value-key="name"
|
@select="handleSelectClient('formLocation', $event)"
|
></el-autocomplete>
|
</div>
|
</el-form-item>
|
<!-- 产品类别 -->
|
<el-form-item
|
v-else-if="item.productType"
|
label=" "
|
:prop="'tableData.' + scope.$index + '.' + item.prop"
|
>
|
<div class="custom-name">
|
<span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row.productCategory }}</span>
|
<el-autocomplete
|
v-else
|
style="width: 100%"
|
v-model="scope.row.productCategory"
|
@focus="productTypeFocus"
|
:fetch-suggestions="
|
(queryString, callback) => {
|
querySearchAsync(queryString, callback, 'productType')
|
}
|
"
|
value-key="name"
|
@select="handleSelectClient('productType', $event)"
|
></el-autocomplete>
|
</div>
|
</el-form-item>
|
<!-- 用户 -->
|
<el-form-item v-else-if="item.user" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
|
<div class="custom-name">
|
<span>{{ "管理员" }}</span>
|
<!-- <el-select
|
v-else
|
v-model="scope.row[item.prop]"
|
placeholder="请选择"
|
size="mini"
|
style="width: 80%"
|
@change="selCommonClick"
|
>
|
<el-option v-for="item in memberOptions" :key="item.id" :label="item.name" :value="item.name">
|
</el-option>
|
</el-select> -->
|
</div>
|
</el-form-item>
|
<!-- 路线 -->
|
<el-form-item v-else-if="item.route" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
|
<div class="custom-name">
|
<span v-if="scope.row.isEdit">{{ scope.row[item.prop]?.label ?? scope.row[item.prop] }}</span>
|
<el-select
|
v-else
|
v-model="scope.row[item.prop]"
|
placeholder="请选择"
|
size="mini"
|
style="width: 80%"
|
@change="
|
(val) => {
|
selRouteClick(val, item.prop)
|
}
|
"
|
>
|
<el-option
|
v-for="(item, index) in selRouteOptions"
|
:key="index"
|
:label="item.name"
|
:value="{ value: item.id, label: item.name }"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
</el-form-item>
|
<!-- 公司 -->
|
<el-form-item v-else-if="item.company" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
|
<div class="custom-name">
|
<span v-if="scope.row.isEdit">{{ scope.row[item.prop] }}</span>
|
<el-select v-else v-model="scope.row[item.prop]" placeholder="请选择" size="mini" style="width: 80%">
|
<el-option v-for="(item, index) in companyOptions" :key="index" :label="item.name" :value="item">
|
</el-option>
|
</el-select>
|
</div>
|
</el-form-item>
|
<span v-else>{{ scope.row[item.prop] }}</span>
|
</template>
|
<span v-else>{{ scope.row[item.prop] }}</span>
|
</template>
|
</el-table-column>
|
<slot name="tableButton" />
|
</el-table>
|
</el-form>
|
<div v-if="!detailEnter && !isinventory && !isReorder&&isOperateAdd" style="margin: 10px">
|
<el-button size="small" type="primary" @click="add">新增</el-button>
|
<el-button size="small" type="primary" @click="empty">清空</el-button>
|
</div>
|
<!-- 产品名称 -->
|
<SelectCommonDialog
|
v-if="editSelCommonConfig.editVisible"
|
:edit-common-config="editSelCommonConfig"
|
:selectBoxList="tableList.tableData"
|
:quotationNumber="quotationNumber"
|
@selClient="selClient"
|
@getSelectArray="getSelectArray"
|
/>
|
</div>
|
</template>
|
|
<script>
|
import { getProductList } from "@/api/product/product"
|
import { getLocationList } from "@/api/warehouseManage/warehouse"
|
import { getCompanyList } from "@/api/common/other"
|
import { getRuleList} from "@/api/operate/inventoryAdjustment"
|
import { getProductCategoryList } from "@/api/product/productCategory"
|
import SimpleSearchInput from "@/components/makepager/SimpleSearchInput"
|
import { getAmountAndPrediction } from "@/api/product/reorderRules"
|
import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog"
|
export default {
|
name: "CommmonFormTableView",
|
components: { SimpleSearchInput, SelectCommonDialog },
|
props: {
|
detailEnter: {
|
type: Boolean,
|
default: false
|
},
|
sign: {
|
type: String,
|
default: ""
|
},
|
productTableList: {
|
type: Object,
|
default: () => {
|
return {
|
selectBox: false,
|
selectIndex: false,
|
tableData: [], // 接口返回数据
|
tableColumn: [
|
// table表单
|
{ label: "", prop: "", min: 200, tooltip: true }
|
]
|
}
|
}
|
},
|
isinventory: {
|
type: Boolean,
|
default: false
|
},
|
islistingrules: {
|
type: Boolean,
|
default: false
|
},
|
isReorder: {
|
type: Boolean,
|
default: false
|
},
|
// 根据报价单查询产品
|
quotationNumber: {
|
type: [String, Number],
|
default: ""
|
},
|
// 列表新增是否多选
|
addTypeIdMultiple: {
|
type: Boolean,
|
default: false
|
},
|
// 是否可以操作 添加等
|
isOperate: {
|
type: Boolean,
|
default: true
|
},
|
// 是否有新增和清空操作
|
isOperateAdd: {
|
type: Boolean,
|
default: true
|
},
|
},
|
data() {
|
return {
|
total: 0,
|
productList: [],
|
tableList: [],
|
editSelCommonConfig: {
|
editVisible: false,
|
isSelectBox: false,
|
title: "",
|
infomation: {}
|
},
|
productIndex: 0,
|
productNameOptions: [],
|
productTypeNameOptions: [],
|
memberOptions: [{ id: 1, name: "管理员" }],
|
selOptions: [
|
{ id: 1, name: "件" },
|
{ id: 2, name: "打" }
|
],
|
selLocationOptions: [], // 位置
|
selSonLocationOptions: [], //子位置
|
selToLocationOptions: [], // 产品到达位置
|
companyOptions: [], // 公司
|
selRouteOptions: [{ id: 1, name: "制造" }], // 路线
|
locacionName: "",
|
locacionId: 0,
|
productName: "",
|
productId: "",
|
initialPosition: "",
|
formLocationList: [],
|
toLocationList: []
|
}
|
},
|
created() {
|
if (this.isinventory) {
|
this.getRuleList()
|
} else if (this.isReorder) {
|
this.getProductList()
|
this.getLocationList()
|
} else {
|
this.getProductList()
|
this.getProductCategoryList()
|
}
|
if (this.islistingrules) {
|
this.getToLocationList()
|
// this.getCompanyList()
|
}
|
this.tableList = this.productTableList
|
},
|
computed: {},
|
watch: {
|
productTableList() {
|
// this.showcol = this.productTableList.showcol
|
this.getTableInfo()
|
}
|
},
|
methods: {
|
getTableInfo(){
|
this.tableList = this.productTableList
|
if (this.tableList.tableData.length === 1 && this.tableList.tableData[0].name === "") {
|
this.isRecalculate = false
|
} else {
|
this.isRecalculate = true
|
}
|
},
|
// 产品名称
|
async getProductList() {
|
await getProductList({
|
page: 1,
|
pageSize: 100
|
}).then((res) => {
|
if (res.code === 200) {
|
if (res.data && res.data.length > 0) {
|
this.productNameOptions = res.data
|
}
|
}
|
})
|
},
|
// 下拉搜索
|
async handleSelectClient(value, item,row,scope) {
|
this.$emit("selProductClick", value, item,row,scope)
|
if (value === "product") {
|
if (item.categoryId === 0 || item.categoryName === "") {
|
this.productTypeNameOptions = []
|
this.tableList.tableData[this.tableList.rowClickIndex].productCategory = ""
|
} else {
|
await getProductCategoryList({
|
categoryId: item.categoryId,
|
keyWord: item.categoryName,
|
page: 1,
|
pageSize: 15
|
}).then((res) => {
|
if (res.code === 200) {
|
const list = res.data ? res.data : []
|
this.productTypeNameOptions = list
|
this.tableList.tableData[this.tableList.rowClickIndex].productCategory = list[0].name
|
}
|
})
|
}
|
} else if (value === "productType") {
|
console.log("产品类型选中")
|
}
|
},
|
querySearchAsync(queryString, cb, value) {
|
let restaurants = ""
|
if (value === "product") {
|
restaurants = this.productNameOptions
|
} else if (value === "productType") {
|
restaurants = this.productTypeNameOptions
|
} else if (value === "formLocation") {
|
restaurants = this.selLocationOptions
|
}
|
var results = (queryString&&restaurants) ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants
|
cb(results)
|
if (results.length === 0) {
|
this.productTypeNameOptions = []
|
}
|
this.$emit("querySearchData", queryString, results, value)
|
},
|
createStateFilter(queryString) {
|
return (state) => {
|
return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0
|
}
|
},
|
// 新增
|
selClientClick(scope, prop) {
|
console.log(scope, prop)
|
this.productIndex = scope.$index
|
this.editSelCommonConfig.title = "产品名称"
|
this.editSelCommonConfig.isSelectBox = true
|
this.editSelCommonConfig.editVisible = true
|
},
|
// 编辑
|
handleEditClient(scope, prop) {
|
console.log(scope, prop)
|
this.productIndex = scope.$index
|
this.editSelCommonConfig.title = "产品名称"
|
this.editSelCommonConfig.isSelectBox = false
|
this.editSelCommonConfig.editVisible = true
|
},
|
// 清除选中产品
|
setValueNull(val) {
|
console.log(val, "看看val")
|
},
|
|
// 库存调整获取位置和产品
|
async getRuleList() {
|
await getRuleList({
|
locationId: 0,
|
productId: ""
|
}).then((res) => {
|
if (res.code === 200) {
|
const list = res.data ? res.data : []
|
this.selLocationOptions = list.locationList
|
this.selSonLocationOptions = list.locationList
|
this.productNameOptions = list.productList
|
}
|
})
|
},
|
// 获取产品类型列表
|
async getProductCategoryList() {
|
await getProductCategoryList({
|
categoryId: 0,
|
keyWord: "",
|
page: 1,
|
pageSize: 15
|
}).then((res) => {
|
if (res.code === 200) {
|
const list = res.data ? res.data : []
|
this.productTypeNameOptions = list
|
}
|
})
|
},
|
|
// 位置
|
async getLocationList() {
|
this.locacionName = ""
|
await getLocationList({
|
// keyword: "",
|
type:3,
|
jointName: this.initialPosition ? this.initialPosition : null,
|
productId: this.queryProductId ? this.queryProductId : null,
|
productCategoryId: this.categoryId ? this.categoryId : null,
|
page: 1,
|
pageSize: 100
|
}).then((res) => {
|
if (res.code === 200) {
|
const list = res.data ? res.data : []
|
this.selLocationOptions = list
|
this.selSonLocationOptions = list
|
if (this.isReorder) {
|
this.locacionName = list[0]?.name
|
this.locacionId = list[0]?.id
|
this.$emit("selLocationClick", list[0], "locacionName")
|
}
|
}
|
})
|
},
|
// 产品到达位置
|
async getToLocationList() {
|
await getLocationList({
|
// keyword: "",
|
type: 3,
|
page: 1,
|
pageSize: 100
|
}).then((res) => {
|
if (res.code === 200) {
|
const list = res.data ? res.data : []
|
this.selToLocationOptions = list
|
this.selSonLocationOptions = list
|
if (this.isReorder) {
|
this.locacionName = list[0]?.name
|
this.locacionId = list[0]?.id
|
this.$emit("selLocationClick", list[0], "locacionName")
|
}
|
}
|
})
|
},
|
// 设置子位置/源位置
|
async setLocationList(jointName, tag) {
|
if (tag === "fromLocation") {
|
await getLocationList({
|
jointName: jointName,
|
page: 1,
|
pageSize: 100
|
}).then((res) => {
|
if (res.code === 200) {
|
this.selSonLocationOptions = res.data
|
}
|
})
|
} else if (tag === "toLocation") {
|
await getLocationList({
|
jointName: jointName,
|
page: 1,
|
pageSize: 100
|
}).then((res) => {
|
if (res.code === 200) {
|
this.selToLocationOptions = res.data
|
}
|
})
|
} else {
|
await getLocationList({
|
jointName: jointName,
|
page: 1,
|
pageSize: 100
|
}).then((res) => {
|
if (res.code === 200) {
|
this.selSonLocationOptions = res.data
|
}
|
})
|
}
|
},
|
// 获取公司列表
|
async getCompanyList() {
|
await getCompanyList().then((res) => {
|
if (res.code === 200) {
|
this.companyOptions = res.data
|
}
|
})
|
},
|
selProductNameClick(item) {
|
this.productIndex = this.tableList.tableData.length - 1
|
this.tableList.tableData.map((ite, index) => {
|
if (index === this.productIndex) {
|
ite.productId = item.id
|
ite.productName = item.name
|
ite.amount = item.amount
|
ite.unit = item.unit
|
}
|
})
|
},
|
// 选择产品
|
selProductClick(item, row) {
|
console.log("选择产品",row,item)
|
if (this.isReorder) {
|
this.productId = item.id
|
this.productName = item.name
|
this.getAmountAndPrediction(item, "product", row)
|
} else {
|
let selIndex = 0
|
this.tableList.tableData.map((ite, index) => {
|
// ite.id 是上架规则的, ite.productId是库存调整的
|
if (ite.id === row.id && ite.id != undefined && row.id != undefined) {
|
selIndex = index
|
ite.productId = item.id
|
ite.productName = item.name
|
ite.categoryId = item.categoryId
|
ite.productCategory = item.categoryName
|
ite.amount = item.amount
|
ite.unit = item.unit
|
} else if (ite.productId === row.productId) {
|
selIndex = index
|
ite.productId = item.id
|
ite.productName = item.name
|
ite.categoryId = item.categoryId
|
ite.productCategory = item.categoryName
|
// ite.amount = item.amount
|
ite.unit = item.unit
|
}
|
})
|
this.$emit("selProductClick", "product", this.tableList.tableData[selIndex])
|
}
|
if (this.isinventory) {
|
getRuleList({
|
locationId: 0,
|
productId: item.value
|
}).then((res) => {
|
if (res.code === 200) {
|
const list = res.data ? res.data : []
|
this.selLocationOptions = list.locationList
|
this.selSonLocationOptions = list.locationList
|
}
|
})
|
}
|
|
// this.$emit("selProductClick", item)
|
},
|
// 选择产品类型
|
selProductTypeClick(item) {
|
this.tableList.tableData.map((ite) => {
|
if (ite.productCategory.label === item.label) {
|
ite.productCategoryId = item.value
|
ite.productCategory = item.label
|
}
|
})
|
if (this.isinventory) {
|
this.getProductCategoryList()
|
}
|
// this.$emit("selProductTypeClick", item)
|
},
|
// 产品类型获取焦点
|
productTypeFocus() {
|
getProductCategoryList({
|
categoryId: 0,
|
keyWord: "",
|
page: 1,
|
pageSize: 15
|
}).then((res) => {
|
if (res.code === 200) {
|
const list = res.data ? res.data : []
|
this.productTypeNameOptions = list
|
}
|
})
|
},
|
// 选择位置
|
selLocationClick(item, prop, row) {
|
console.log("位置选择",item,row)
|
if (prop === "areaName") {
|
getLocationList({
|
jointName: item.label,
|
page: 1,
|
pageSize: 100
|
}).then((res) => {
|
if (res.code === 200) {
|
const list = res.data ? res.data : []
|
this.selSonLocationOptions = list
|
}
|
})
|
}else if(prop==='locationName'){
|
console.log("locationName")
|
}
|
if (this.isReorder) {
|
this.locacionId = item.value
|
this.productId = row.productId
|
if (this.productId.length !== 0) {
|
this.getAmountAndPrediction(row, "location", item)
|
}
|
}
|
if (this.isinventory) {
|
getRuleList({
|
locationId: item.value,
|
productId: ""
|
}).then((res) => {
|
if (res.code === 200) {
|
const list = res.data ? res.data : []
|
this.productNameOptions = list.productList
|
}
|
})
|
}
|
this.$emit("selLocationClick", item, prop)
|
},
|
// 选择子位置
|
selSonLocationClick(item,prop,row,scope) {
|
this.$emit("selSonLocationClick", item,prop,row,scope)
|
},
|
// 获取在库与预测数量
|
getAmountAndPrediction(item, val, ite) {
|
let selIndex = 0
|
getAmountAndPrediction({
|
locationId: val === "product" ? this.locacionId : ite.value,
|
productId: val === "product" ? item.id : this.productId
|
}).then((res) => {
|
if (res.code === 200) {
|
this.tableList.tableData.map((ite, index) => {
|
if (val === "product") {
|
if (index === 0) {
|
selIndex = index
|
ite.amount = res.data.amount
|
ite.prediction = res.data.prediction
|
ite.productId = item.id
|
ite.productName = item.name
|
ite.unit = item.unit
|
}
|
} else {
|
if (ite.id === item.id) {
|
selIndex = index
|
ite.amount = res.data.amount
|
ite.prediction = res.data.prediction
|
}
|
}
|
})
|
this.$emit("selProductClick", this.tableList.tableData[selIndex])
|
}
|
})
|
},
|
// 选择路线
|
selRouteClick(item, prop) {
|
this.$emit("selRouteClick", item, prop)
|
},
|
// 选择单位/用户
|
selCommonClick(item) {
|
console.log(item)
|
},
|
handleReserve(row) {
|
return row._id ? row._id : row.id
|
},
|
handleSelectionChange(val) {
|
this.$emit("getSelectArray", val)
|
},
|
|
// 数字换行为金额显示格式
|
number_format(number, decimals, dec_point, thousands_sep) {
|
decimals = 2 //这里默认设置保留两位小数,也可以注释这句采用传入的参数
|
/*
|
* 参数说明:
|
* number:要格式化的数字
|
* decimals:保留几位小数
|
* dec_point:小数点符号
|
* thousands_sep:千分位符号
|
* */
|
number = (number + "").replace(/[^0-9+-Ee.]/g, "")
|
var n = !isFinite(+number) ? 0 : +number,
|
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
|
sep = typeof thousands_sep === "undefined" ? "," : thousands_sep,
|
dec = typeof dec_point === "undefined" ? "." : dec_point
|
var s = n.toString().split(".")
|
var re = /(-?\d+)(\d{3})/
|
while (re.test(s[0])) {
|
s[0] = s[0].replace(re, "$1" + sep + "$2")
|
}
|
if ((s[1] || "").length < prec) {
|
s[1] = s[1] || ""
|
s[1] += new Array(prec - s[1].length + 1).join("0")
|
} else {
|
s[1] = s[1].substring(0, prec) //小数点位数超出长度时截取前面的位数
|
}
|
return s.join(dec)
|
},
|
// 新增
|
add() {
|
if (this.addTypeIdMultiple) {
|
this.productIndex = this.tableList.tableData.length
|
this.editSelCommonConfig.title = "产品名称"
|
this.editSelCommonConfig.isSelectBox = true
|
this.editSelCommonConfig.editVisible = true
|
} else {
|
this.$emit("addProductClick")
|
}
|
},
|
commonInputChange(val, prop, row) {
|
this.$emit("inputContent", val, prop, row)
|
},
|
// 清空
|
empty() {
|
this.$emit("emptyProductClick")
|
},
|
// 清除已选择用户
|
clearupClient(scope) {
|
this.productIndex = scope.$index
|
this.tableList.tableData.map((ite, index) => {
|
if (index === this.productIndex) {
|
ite.productName = ""
|
ite.id = ""
|
ite.name = ""
|
ite.amount = 1
|
ite.number = ""
|
ite.model = ""
|
ite.specs = ""
|
ite.unit = ""
|
ite.deliveryTime = 0
|
ite.shippingDuration = 0
|
}
|
})
|
this.$emit("clearupProduct", this.tableList.tableData)
|
},
|
deleteClient(row, scope) {
|
if (this.tableList.tableData.length == 1) {
|
this.$message.error("至少保留一条,不能刪除了!")
|
return true
|
}
|
this.tableList.tableData.splice(scope.$index, 1)
|
},
|
// 行点击
|
tableRowClick(row) {
|
if (this.isReorder) {
|
this.locacionName = row.location.name
|
}
|
this.$emit("tableRowClick", row, row.index)
|
},
|
// 单选行相关
|
tableRowClassName({ row, rowIndex }) {
|
row.index = rowIndex
|
},
|
setFormItem(val) {
|
console.log(val)
|
},
|
commoInput() {},
|
selClient(item) {
|
let list = this.tableList.tableData.map((item) => item.id)
|
if (list.findIndex((v) => v == item.id) == -1) {
|
this.isRecalculate = true
|
// this.editConfig.infomation.client_name = row.name
|
this.tableList.tableData.map((ite, index) => {
|
if (index === this.productIndex) {
|
ite.productName = item.name
|
ite.productId = item.id
|
ite.name = item.name
|
ite.amount = 1
|
ite.number = item.id
|
ite.specs = item.specs
|
ite.model = item.model
|
// ite.price = item.price
|
// ite.total = item.amount ? item.amount * item.price : 1 * item.price
|
ite.unit = item.unit
|
}
|
})
|
} else {
|
this.$message.error("不能选择重复的产品, 请重新选择")
|
}
|
},
|
getSelectArray(val) {
|
this.$emit("getSelectArray", val, this.productIndex)
|
}
|
}
|
}
|
</script>
|
|
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
<style lang="scss" scoped>
|
.setHeight {
|
height: 100%;
|
}
|
.page-view {
|
min-width: 100px;
|
|
.el-form-item {
|
margin-bottom: 0;
|
.custom-name {
|
display: flex;
|
justify-content: center;
|
font-size: 12px;
|
line-height: 17px;
|
font-family: PingFangSC;
|
.common-select-btn {
|
margin-left: 5px;
|
font-size: 13px;
|
cursor: pointer;
|
}
|
}
|
}
|
}
|
::v-deep {
|
.el-autocomplete {
|
height: 28px;
|
.el-input {
|
height: 28px;
|
.el-input__inner {
|
height: 28px;
|
}
|
}
|
}
|
.el-form-item__label {
|
display: none;
|
}
|
.el-form-item__content {
|
// height: 28px; /* 设置高度 */
|
line-height: 22px; /* 设置行高 */
|
}
|
.el-table__footer-wrapper tbody td.el-table__cell {
|
background-color: #fff;
|
// text-align: right;
|
font-weight: bold;
|
}
|
.el-table .cell,
|
.el-table th.el-table__cell > .cell {
|
padding: 0 5px;
|
}
|
// .el-input__inner {
|
// text-align: left;
|
// }
|
}
|
|
::v-deep .el-table .cell {
|
font-size: 12px;
|
line-height: 17px;
|
font-family: PingFangSC;
|
color: rgba(0, 0, 0, 0.9);
|
.el-button--text {
|
width: auto;
|
height: auto;
|
font-family: PingFangSC-Medium, sans-serif;
|
}
|
}
|
::v-deep .el-table .el-table__cell {
|
padding: 6px 0 !important;
|
height: 35px;
|
text-align: center;
|
}
|
::v-deep .el-table__body-wrapper {
|
height: unset !important;
|
}
|
</style>
|