Browse Source

20240819 属性

java8
qiezi 1 year ago
parent
commit
439e66b13f
  1. 11
      src/api/property/propertyItem.js
  2. 10
      src/api/property/propertyItemAvailable.js
  3. 11
      src/api/property/template.js
  4. 13
      src/api/property/templateDetail.js
  5. 794
      src/views/modules/property/available.vue
  6. 1041
      src/views/modules/property/propertyTemplate.vue
  7. 7
      src/views/modules/quote/detail/primary/quoteDetailBom.vue
  8. 48
      src/views/modules/quote/detail/primary/quoteDetailOther.vue
  9. 63
      src/views/modules/quote/detail/primary/quoteDetailRouting.vue
  10. 14
      src/views/modules/quote/detail/quoteDetail.vue
  11. 1
      src/views/modules/quote/index.vue

11
src/api/property/propertyItem.js

@ -0,0 +1,11 @@
import {createAPI} from "../../utils/httpRequest";
export const queryPropertyItem = (data) => createAPI("/property/item", "post", data);
export const queryPropertyItemByPage = (data) => createAPI(`/property/item/${data.no}/${data.size}`, "post", data);
export const savePropertyItem = (data) => createAPI("/property/item/save", "post", data);
export const updatePropertyItem = (data) => createAPI("/property/item/update", "post", data);
export const removePropertyItem = (data) => createAPI(`/property/item/remove/${data.id}`, "post", data);

10
src/api/property/propertyItemAvailable.js

@ -0,0 +1,10 @@
import {createAPI} from "../../utils/httpRequest";
import {data} from "autoprefixer";
export const queryPropertyItemAvailable = (data) => createAPI(`/property/item/available`,'post',data)
export const savePropertyItemAvailable = (data) => createAPI(`/property/item/available/save`,'post',data)
export const removePropertyItemAvailable = (data) => createAPI(`/property/item/available/remove`,'post',data)
export const updatePropertyItemAvailable = (data) => createAPI(`/property/item/available/update`,'post',data)

11
src/api/property/template.js

@ -0,0 +1,11 @@
import {createAPI} from "../../utils/httpRequest";
export const queryPropertyTemplate = (data) => createAPI(`/property/template`, "post", data);
export const queryPropertyTemplateType = (data) => createAPI(`/property/template/type`, "post", data);
export const queryPropertyTemplateByPage = (data) => createAPI(`/property/template/${data.no}/${data.size}`, "post", data);
export const savePropertyTemplate = (data) => createAPI(`/property/template/save`, "post", data);
export const removePropertyTemplate = (data) => createAPI(`/property/template/remove/${data.id}`, "post", data);
export const updatePropertyTemplate = (data) => createAPI(`/property/template/update`, "post", data);

13
src/api/property/templateDetail.js

@ -0,0 +1,13 @@
import {createAPI} from "../../utils/httpRequest";
export const queryPropertyTemplateDetail = (data) => createAPI('/property/template/detail','post',data)
export const queryPropertyTemplateDetailItem = (data) => createAPI('/property/template/detail/item','post',data)
export const batchSavePropertyTemplateDetail = (data) => createAPI('/property/template/detail/batch/save','post',data)
export const removePropertyTemplateDetail = (data) => createAPI('/property/template/detail/remove','post',data)
export const removeBatchPropertyTemplateDetail = (data) => createAPI('/property/template/detail/batch/remove','post',data)
export const batchUpdatePropertyTemplateDetail = (data) => createAPI('/property/template/detail/batch/update','post',data)

794
src/views/modules/property/available.vue

@ -0,0 +1,794 @@
<script>
import {queryPropertyTemplateType} from "../../../api/property/template";
import {
queryPropertyItemByPage,
removePropertyItem,
savePropertyItem,
updatePropertyItem
} from "../../../api/property/propertyItem";
import BuSelect from "../../../components/selector/select/BuSelect.vue";
import {getSiteAndBuByUserName} from "../../../api/eam/eam";
import {
queryPropertyItemAvailable, removePropertyItemAvailable,
savePropertyItemAvailable,
updatePropertyItemAvailable
} from "../../../api/property/propertyItemAvailable";
export default {
name: "available",
components: {BuSelect},
data(){
return{
no:1,
size:20,
total:0,
menuId:180003,
dataList: [],
queryLoading: false,
templateItem:{
id:null,
itemNo:'',
itemDesc:'',
itemType:'',
buId:null,
valueType:'',
valueTypeDb:'',
defaultValue:'',
maxValue:undefined,
minValue:undefined,
valueChooseFlag:'',
},
dataTypeList: [],
queryForm: {
},
columns: [
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableBuDesc',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'buDesc',
headerAlign: "center",
align: "center",
columnLabel: 'BU',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 80,
sortLv: 0,
status: true,
fixed: '',
},{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableItemTypeDesc',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'itemTypeDesc',
headerAlign: "center",
align: "center",
columnLabel: '属性类型',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 120,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableValueType',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'itemNo',
headerAlign: "center",
align: "left",
columnLabel: '属性编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 100,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableValueType',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'itemDesc',
headerAlign: "center",
align: "left",
columnLabel: '属性名称',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 120,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableValueType',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'valueType',
headerAlign: "center",
align: "center",
columnLabel: '值类型',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 80,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableDefaultValue',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'defaultValue',
headerAlign: "center",
align: "right",
columnLabel: '参照值',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 80,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableMaxValue',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'maxValue',
headerAlign: "center",
align: "right",
columnLabel: '最大值',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 80,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableMinValue',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'minValue',
headerAlign: "center",
align: "right",
columnLabel: '最小值',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 80,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableValueChooseFlag',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'valueChooseFlag',
headerAlign: "center",
align: "center",
columnLabel: '是否值可选',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 80,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableCreateDate',
tableId: '180003Table',
tableName: '属性表',
columnProp: 'createDate',
headerAlign: 'center',
align: 'center',
columnLabel: '创建时间',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 100,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableCreateBy',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'createBy',
headerAlign: "center",
align: "center",
columnLabel: '创建人',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 80,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableUpdateDate',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'updateDate',
headerAlign: "center",
align: "center",
columnLabel: '更新时间',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 100,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 180003,
serialNumber: '180003TableUpdateBy',
tableId: "180003Table",
tableName: "属性表",
columnProp: 'updateBy',
headerAlign: "center",
align: "center",
columnLabel: '更新人',
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: 80,
sortLv: 0,
status: true,
fixed: '',
},
],
saveVisible:false,
saveLoading:false,
saveForm:{
},
rules:{
buId: [
{ required: true, message: '请选择BU', trigger: 'change' }
],
itemNo: [
{ required: true, message: '请输入属性编码', trigger: 'blur' }
],
itemDesc: [
{ required: true, message: '请输入属性描述', trigger: 'blur' }
],
itemType: [
{ required: true, message: '请选择属性类型', trigger: 'change' }
],
valueType: [
{ required: true, message: '请选择值类型', trigger: 'change' }
],
},
availableVisible:false,
availableLoading:false,
availableForm:{
},
availableList:[],
availableValueVisible:false,
availableValue:{
}
}
},
methods:{
handleQueryPropertyTemplateType(){
let params = {
}
queryPropertyTemplateType(params).then(({data})=>{
if (data && data.code === 0){
this.dataTypeList = data.rows;
}else {
this.$message.warning(data.msg);
}
}).catch((error)=>{
this.$message.error(error);
})
},
handleQueryByPage(){
let params = {
...this.templateItem,
no:this.no,
size:this.size,
createBy: this.$store.state.user.name,
}
this.queryLoading = true;
queryPropertyItemByPage(params).then(({data})=>{
if (data && data.code === 0){
this.dataList = data.rows;
this.total = data.total;
}else {
this.$message.warning(data.msg);
}
this.queryLoading = false;
}).catch((error)=>{
this.$message.error(error);
this.queryLoading = false;
})
},
handleSizeChange(val){
this.size = val;
this.handleQueryByPage();
},
handlePageChange(val){
this.no = val;
this.handleQueryByPage();
},
handleSave(row){
this.$nextTick(()=>{
if (this.$refs.saveForm){
this.$refs.saveForm.clearValidate();
}
})
if (row){
this.saveForm = {...row}
}else {
this.saveForm = {...this.templateItem}
this.saveForm.valueChooseFlag = 'N';
this.saveForm.valueType = 'text';
if (this.queryForm.itemType){
this.saveForm.itemType = this.queryForm.itemType;
}
this.saveForm.buId = this.userBuList.length > 0 ? this.userBuList[0].id : ''
}
this.saveVisible = true;
},
handleSaveOrUpdate(){
this.$refs.saveForm.validate((valid,obj) => {
if (valid){
if (this.saveForm.id){
this.handleUpdateItem();
}else {
this.handleSaveItem();
}
}else {
let i = 1
for (let key in obj) {
if (i === 1){
this.$message.error(obj[key][0].message);
break
}
i++
}
}
})
},
handleSaveItem(){
let params = {
...this.saveForm,
createBy: this.$store.state.user.name,
}
if (!this.saveForm.minValue){
params.minValue = '';
}
if (!this.saveForm.maxValue){
params.maxValue = '';
}
this.saveLoading = true;
savePropertyItem(params).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
this.saveVisible = false;
this.handleQueryByPage();
}else {
this.$message.warning(data.msg);
}
this.saveLoading = false;
}).catch((error)=>{
this.$message.error(error);
this.saveLoading = false;
})
},
handleUpdateItem(){
let params = {
...this.saveForm,
updateBy: this.$store.state.user.name,
}
if (!this.saveForm.minValue){
params.minValue = '';
}
if (!this.saveForm.maxValue){
params.maxValue = '';
}
this.saveLoading = true;
updatePropertyItem(params).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
this.saveVisible = false;
this.handleQueryByPage();
}else {
this.$message.warning(data.msg);
}
this.saveLoading = false;
}).catch((error)=>{
this.$message.error(error);
this.saveLoading = false;
})
},
handleQueryBu(){
let params = {
username: this.$store.state.user.name,
}
getSiteAndBuByUserName(params).then(({data}) => {
if (data && data.code === 0) {
this.userBuList = data.rows
}else {
this.$message.warning(data.message)
}
}).catch((error)=>{
this.$message.error(error)
})
},
handleRemove(row){
this.$alert('确认删除该属性吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let params = {
id: row.id,
}
this.saveLoading = true;
removePropertyItem(params).then(({data}) => {
if (data && data.code === 0) {
this.$message.success(data.msg)
this.handleQueryByPage()
} else {
this.$message.warning(data.msg)
}
this.saveLoading = false
}).catch((error) => {
this.$message.error(error)
this.saveLoading = false
})
}).catch(() => {
})
},
handleSaveAvailable(row){
this.availableForm = {...row}
this.availableForm.itemId = this.availableForm.id
this.availableForm.id = null
this.handleQueryPropertyItemAvailable();
this.availableVisible = true;
},
handleSaveAvailableValue(row){
if (row){
this.availableValue = {...row}
}else {
this.availableValue = {
...this.availableForm,
availableValue:undefined,
}
}
this.availableValueVisible = true;
},
handleQueryPropertyItemAvailable(){
let params = {
itemId: this.availableForm.itemId,
}
queryPropertyItemAvailable(params).then(({data})=>{
if (data && data.code === 0){
this.availableList = data.rows;
}else {
this.$message.warning(data.msg);
}
}).catch((error)=>{
this.$message.error(error);
})
},
handleSaveItemAvailableValue(){
if (this.availableValue.id){
this.availableValue.updateBy = this.$store.state.user.name
updatePropertyItemAvailable(this.availableValue).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg)
this.availableValueVisible = false;
this.handleQueryPropertyItemAvailable();
} else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}else {
this.availableValue.createBy = this.$store.state.user.name
savePropertyItemAvailable(this.availableValue).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg)
this.availableValueVisible = false;
this.handleQueryPropertyItemAvailable();
} else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}
},
handleRemoveAvailableValue(row){
this.$confirm('确认删除该可选值吗?', '提示', {}).then(() => {
removePropertyItemAvailable(row).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg)
this.availableValueVisible = false;
this.handleQueryPropertyItemAvailable();
} else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
})
},
changeValueType(val){
this.saveForm.minValue = undefined;
this.saveForm.maxValue = undefined;
}
},
created() {
this.queryForm = {...this.templateItem}
this.handleQueryPropertyTemplateType();
this.handleQueryByPage();
this.handleQueryBu();
},
watch:{
'saveForm.itemNo'(newVal, oldVal){
this.saveForm.itemNo = newVal.toUpperCase();
},
'templateItem.itemNo'(newVal, oldVal){
this.templateItem.itemNo = newVal.toUpperCase();
}
}
}
</script>
<template>
<div>
<div style="width: 1000px">
<el-form :model="templateItem" label-position="top">
<el-row :gutter="10">
<el-col :span="4">
<el-form-item label="属性编码">
<el-input v-model="templateItem.itemNo"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="属性描述">
<el-input v-model="templateItem.itemDesc"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="属性类型">
<el-select v-model="templateItem.itemType" style="width: 100%;">
<el-option label="全部" value=""></el-option>
<el-option :label="item.functionTypeDesc" :value="item.functionType" v-for="item in dataTypeList" :key="item.functionType"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label=" ">
<el-button type="primary" @click="handleQueryByPage">查询</el-button>
<el-button type="primary" @click="handleSave(null)">新增</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-table :data="dataList" style="width: 100%" border v-loading="queryLoading" height="80vh">
<el-table-column
v-for="(item,index) in columns" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed==''?false:item.fixed"
:min-width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden">
<template v-if="item.columnProp==='valueType'">{{ scope.row[item.columnProp] === 'text' ? '文本' : '数字' }}</template>
<template v-else-if="item.columnProp==='valueChooseFlag'">{{ scope.row[item.columnProp] === 'Y' ? '是' : '否' }}</template>
<template v-else>{{ scope.row[item.columnProp] }}</template>
</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="160"
label="操作">
<template slot-scope="scope">
<a @click="handleSave(scope.row)">编辑</a>
<a @click="handleRemove(scope.row)">删除</a>
<a v-if="scope.row.valueChooseFlag === 'Y'" @click="handleSaveAvailable(scope.row)">可选值</a>
</template>
</el-table-column>
</el-table>
<el-pagination @size-change="handleSizeChange"
@current-change="handlePageChange"
:current-page="no"
:page-sizes="[20, 50, 100, 200, 500]"
:page-size="size"
:total="total"
layout="total,sizes, prev, pager, next, jumper">
</el-pagination>
<el-dialog title="属性信息" :close-on-click-modal="false" v-drag :visible.sync="saveVisible" width="500px">
<el-form :model="saveForm" ref="saveForm" :rules="rules" label-position="top" label-width="100px">
<el-row :gutter="10">
<el-col :span="16">
<el-form-item label="BU" prop="buId" :show-message="false">
<bu-select v-model="saveForm.buId" :disabled="saveForm.id > 0"></bu-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="属性编码" prop="itemNo" :show-message="false">
<el-input v-model="saveForm.itemNo" :disabled="saveForm.id"></el-input>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item label="属性描述" prop="itemDesc" :show-message="false">
<el-input v-model="saveForm.itemDesc"></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="值类型" prop="valueType" :show-message="false">
<el-select v-model="saveForm.valueType" style="width: 100%;" @change="changeValueType">
<el-option label="文本" value="text"></el-option>
<el-option label="数字" value="num"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item label="参照值" prop="defaultValue" :show-message="false">
<el-input v-model="saveForm.defaultValue"></el-input>
</el-form-item>
</el-col>
<el-col :span="10" v-if="saveForm.valueType !== 'text'">
<el-form-item label="最大值" prop="maxValue" :show-message="false">
<el-input-number style="width: 100%;" :controls="false" :step="0" v-model="saveForm.maxValue"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="10" v-else>
<el-form-item label="最大值" prop="maxValue" :show-message="false">
<el-input v-model="saveForm.maxValue"></el-input>
</el-form-item>
</el-col>
<el-col :span="10" v-if="saveForm.valueType !== 'text'">
<el-form-item label="最小值" prop="minValue" :show-message="false">
<el-input-number style="width: 100%;" :controls="false" :step="0" :disabled="saveForm.valueType === 'text'" v-model="saveForm.minValue"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="10" v-else>
<el-form-item label="最小值" prop="minValue" :show-message="false">
<el-input v-model="saveForm.minValue"></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="属性类型" prop="itemType" :show-message="false">
<el-select v-model="saveForm.itemType" style="width: 100%;">
<el-option :label="item.functionTypeDesc" :value="item.functionType" v-for="item in dataTypeList" :key="item.functionType"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label=" " prop="valueChooseFlag" :show-message="false">
<el-checkbox v-model="saveForm.valueChooseFlag" :true-label="'Y'" :false-label="'N'">是否值可选</el-checkbox>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" :loading="saveLoading" @click="handleSaveOrUpdate"> </el-button>
<el-button @click="saveVisible = false"> </el-button>
</div>
</el-dialog>
<el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="availableVisible" width="500px">
<el-form :model="availableForm" label-position="top" >
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="属性编码" prop="itemNo" :show-message="false">
<el-input v-model="availableForm.itemNo" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="属性描述" prop="itemDesc" :show-message="false">
<el-input v-model="availableForm.itemDesc" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label=" " >
<el-button type="primary" @click="handleSaveAvailableValue(null)">新增</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table :data="availableList" border style="width: 100%" :height="300">
<el-table-column
prop="availableValue"
header-align="center"
align="left"
min-width="200"
label="属性值">
</el-table-column>
<el-table-column
prop=""
header-align="center"
align="center"
min-width="100"
label="操作">
<template slot-scope="scope">
<a @click="handleSaveAvailableValue(scope.row)">修改</a>
<a @click="handleRemoveAvailableValue(scope.row)">删除</a>
</template>
</el-table-column>
</el-table>
</el-dialog>
<el-dialog title="可选值信息" :close-on-click-modal="false" v-drag :visible.sync="availableValueVisible" width="300px">
<el-form :model="availableValue" label-position="top">
<el-form-item label="可选值" required>
<el-input v-model="availableValue.availableValue" v-if="availableForm.valueType === 'text'"></el-input>
<el-input-number style="width: 100%;" :controls="false" :step="0" v-model="availableForm.availableValue" v-if="availableForm.valueType === 'num'"></el-input-number>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" :loading="saveLoading" @click="handleSaveItemAvailableValue"> </el-button>
<el-button @click="availableValueVisible = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<style scoped>
.el-table /deep/ .cell{
height: auto;
line-height: 1.5;
}
</style>

1041
src/views/modules/property/propertyTemplate.vue
File diff suppressed because it is too large
View File

7
src/views/modules/quote/detail/primary/quoteDetailBom.vue

@ -14,6 +14,8 @@ export default {
data(){ data(){
return{ return{
isAllBom:false, isAllBom:false,
dataList:[],
treeData:[],
} }
}, },
methods:{ methods:{
@ -42,10 +44,15 @@ export default {
</div> </div>
<el-container> <el-container>
<el-aside width="300px"> <el-aside width="300px">
<el-tree
:data="treeData">
</el-tree>
</el-aside> </el-aside>
<el-main style="padding: 0"> <el-main style="padding: 0">
<el-table :data="dataList" border style="width: 100%" :height="420">
</el-table>
</el-main> </el-main>
</el-container> </el-container>
</div> </div>

48
src/views/modules/quote/detail/primary/quoteDetailOther.vue

@ -0,0 +1,48 @@
<script>
export default {
name: "quoteDetailOther",
props:{
quoteDetail: {
type: Object,
required: true
}
},
model:{
prop: "quoteDetail",
event: "update"
},
data(){
return{
dataList:[],
}
},
methods:{
handleQueryOther(){
console.log(this.quoteDetail.id)
}
},
created() {
if (this.quoteDetail && this.quoteDetail.id){
this.handleQueryOther()
}
},
watch:{
'quoteDetail.id'(newVal, oldVal){
this.handleQueryOther()
},
}
}
</script>
<template>
<div>
<el-button type="primary">新增</el-button>
<el-table :data="dataList" style="width: 100%" border :height="420">
</el-table>
</div>
</template>
<style scoped>
</style>

63
src/views/modules/quote/detail/primary/quoteDetailRouting.vue

@ -0,0 +1,63 @@
<script>
export default {
name: "quoteDetailRouting",
props:{
quoteDetail:{
type:Object,
required:true
},
},
model:{
prop: "quoteDetail",
event: "update"
},
data(){
return{
isAllBom:false,
dataList:[],
treeData:[],
}
},
methods:{
handleQueryQuoteDetailRouting(){
console.log(this.quoteDetail.id)
},
},
created() {
if (this.quoteDetail && this.quoteDetail.id){
this.handleQueryQuoteDetailRouting();
}
},
watch:{
'quoteDetail.id'(newVal,oldVal){
this.handleQueryQuoteDetailRouting();
},
}
}
</script>
<template>
<div>
<div style="margin-bottom: 10px">
<el-link style="margin-right: 20px">切换版本</el-link>
<el-checkbox v-model="isAllBom">全级Routing结构</el-checkbox>
</div>
<el-container>
<el-aside width="300px">
<el-tree
:data="treeData">
</el-tree>
</el-aside>
<el-main style="padding: 0">
<el-table :data="dataList" border style="width: 100%" :height="420">
</el-table>
</el-main>
</el-container>
</div>
</template>
<style scoped>
</style>

14
src/views/modules/quote/detail/quoteDetail.vue

@ -10,10 +10,12 @@ import {
import QuoteDetailCost from "./primary/quoteDetailCost.vue"; import QuoteDetailCost from "./primary/quoteDetailCost.vue";
import QuoteDetailTool from "./primary/quoteDetailTool.vue"; import QuoteDetailTool from "./primary/quoteDetailTool.vue";
import QuoteDetailBom from "./primary/quoteDetailBom.vue"; import QuoteDetailBom from "./primary/quoteDetailBom.vue";
import QuoteDetailRouting from "./primary/quoteDetailRouting.vue";
import QuoteDetailOther from "./primary/quoteDetailOther.vue";
export default { export default {
name: "quoteDetail", name: "quoteDetail",
components: {QuoteDetailBom, QuoteDetailTool, QuoteDetailCost, ProjectPartTable},
components: {QuoteDetailOther, QuoteDetailRouting, QuoteDetailBom, QuoteDetailTool, QuoteDetailCost, ProjectPartTable},
props:{ props:{
quote:{ quote:{
type:Object, type:Object,
@ -856,7 +858,7 @@ export default {
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="24">
<el-col :span="16">
<el-form-item label="备注" class="auto" :show-message="false"> <el-form-item label="备注" class="auto" :show-message="false">
<el-input type="textarea" resize="none" :autosize="{minRows: 3, maxRows: 3}" v-model="saveQuoteDetail.remark" disabled></el-input> <el-input type="textarea" resize="none" :autosize="{minRows: 3, maxRows: 3}" v-model="saveQuoteDetail.remark" disabled></el-input>
</el-form-item> </el-form-item>
@ -868,11 +870,15 @@ export default {
<el-tab-pane label="材料" name="bom"> <el-tab-pane label="材料" name="bom">
<quote-detail-bom v-if="saveVisible" v-model:quoteDetail="saveQuoteDetail"></quote-detail-bom> <quote-detail-bom v-if="saveVisible" v-model:quoteDetail="saveQuoteDetail"></quote-detail-bom>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="工艺" name="routing"></el-tab-pane>
<el-tab-pane label="工艺" name="routing">
<quote-detail-routing v-if="saveVisible" v-model:quoteDetail="saveQuoteDetail"></quote-detail-routing>
</el-tab-pane>
<el-tab-pane label="工具" name="tool"> <el-tab-pane label="工具" name="tool">
<quote-detail-tool v-if="saveVisible" v-model:quoteDetail="saveQuoteDetail"></quote-detail-tool> <quote-detail-tool v-if="saveVisible" v-model:quoteDetail="saveQuoteDetail"></quote-detail-tool>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="其他成本" name="other"></el-tab-pane>
<el-tab-pane label="其他成本" name="other">
<quote-detail-other v-if="saveVisible" v-model:quoteDetail="saveQuoteDetail"></quote-detail-other>
</el-tab-pane>
<el-tab-pane label="成本&价格" name="cost"> <el-tab-pane label="成本&价格" name="cost">
<quote-detail-cost v-model:quoteDetail="saveQuoteDetail"></quote-detail-cost> <quote-detail-cost v-model:quoteDetail="saveQuoteDetail"></quote-detail-cost>
</el-tab-pane> </el-tab-pane>

1
src/views/modules/quote/index.vue

@ -439,7 +439,6 @@ export default {
this.$refs.saveForm.clearValidate(); this.$refs.saveForm.clearValidate();
} }
}) })
console.log(row)
if (row){ if (row){
this.saveQuote = { this.saveQuote = {
...row ...row

Loading…
Cancel
Save