|
|
@@ -1,44 +1,141 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
<div>
|
|
|
- <div class="flex-align-center" style="margin-bottom:10px">
|
|
|
- <el-input size="small" style="width:200px;margin-right:10px" v-model="params.content.where.condition" :placeholder="$t(`输入搜索内容`)" @clear="listData(params.content.pageNumber = 1)" @keyup.native.enter="listData(params.content.pageNumber = 1)" clearable></el-input>
|
|
|
- <slot name="addProduct"/>
|
|
|
+ <div class="flex-align-center" style="margin-bottom: 10px">
|
|
|
+ <el-input
|
|
|
+ size="small"
|
|
|
+ style="width: 200px; margin-right: 10px"
|
|
|
+ v-model="params.content.where.condition"
|
|
|
+ :placeholder="$t(`输入搜索内容`)"
|
|
|
+ @clear="listData((params.content.pageNumber = 1))"
|
|
|
+ @keyup.native.enter="listData((params.content.pageNumber = 1))"
|
|
|
+ clearable
|
|
|
+ ></el-input>
|
|
|
+ <slot name="addProduct" />
|
|
|
<uploadAllData
|
|
|
- v-if="tool.checkAuth($route.name,'productBillManage') && data.status === '新建' && isLeader"
|
|
|
- :total="total"
|
|
|
- @onSuccess="listData();$emit('onSuccess')"
|
|
|
- @handlePullApi="handlePullApi"
|
|
|
- @handleDelApi="handleDelApi"
|
|
|
- idName="sa_contract_itemsid"
|
|
|
- type="del"
|
|
|
+ v-if="
|
|
|
+ tool.checkAuth($route.name, 'productBillManage') &&
|
|
|
+ data.status === '新建' &&
|
|
|
+ isLeader
|
|
|
+ "
|
|
|
+ :total="total"
|
|
|
+ @onSuccess="
|
|
|
+ listData();
|
|
|
+ $emit('onSuccess');
|
|
|
+ "
|
|
|
+ @handlePullApi="handlePullApi"
|
|
|
+ @handleDelApi="handleDelApi"
|
|
|
+ idName="sa_contract_itemsid"
|
|
|
+ type="del"
|
|
|
></uploadAllData>
|
|
|
- <el-button class="inline-16" v-if="tool.checkAuth($route.name,'productBillManage') && data.status === '新建' && isLeader" size="small" :type="delProductData.length === 0?'':'primary'" @click="onDelProduct" :disabled="delProductData.length === 0">{{$t(`删 除`)}}</el-button>
|
|
|
- <addProductContract class="inline-16" title="自报价单添加" :tablecolsAdd="tablecolsAdd" :tradefield="data.tradefield" :data="data" @closeDrawer="closeDrawer"
|
|
|
- @addSuccess="queryProuctAdds" @addAll="addAll" ref="addProduct" @addProduct="queryProuctAdd" @uploadData="queryUploadData" v-if="tool.checkAuth($route.name,'productBillManage') && data.status === '新建' && isLeader"
|
|
|
+ <el-button
|
|
|
+ class="inline-16"
|
|
|
+ v-if="
|
|
|
+ tool.checkAuth($route.name, 'productBillManage') &&
|
|
|
+ data.status === '新建' &&
|
|
|
+ isLeader
|
|
|
+ "
|
|
|
+ size="small"
|
|
|
+ :type="delProductData.length === 0 ? '' : 'primary'"
|
|
|
+ @click="onDelProduct"
|
|
|
+ :disabled="delProductData.length === 0"
|
|
|
+ >{{ $t(`删 除`) }}</el-button
|
|
|
+ >
|
|
|
+ <addProductContract
|
|
|
+ class="inline-16"
|
|
|
+ title="自报价单添加"
|
|
|
+ :tablecolsAdd="tablecolsAdd"
|
|
|
+ :tradefield="data.tradefield"
|
|
|
+ :data="data"
|
|
|
+ @closeDrawer="closeDrawer"
|
|
|
+ @addSuccess="queryProuctAdds"
|
|
|
+ @addAll="addAll"
|
|
|
+ ref="addProduct"
|
|
|
+ @addProduct="queryProuctAdd"
|
|
|
+ @uploadData="queryUploadData"
|
|
|
+ v-if="
|
|
|
+ tool.checkAuth($route.name, 'productBillManage') &&
|
|
|
+ data.status === '新建' &&
|
|
|
+ isLeader
|
|
|
+ "
|
|
|
>
|
|
|
</addProductContract>
|
|
|
- <addProduct v-if="tool.checkAuth($route.name,'productBillManage') && data.status === '新建' && isLeader"
|
|
|
- class="inline-16" @productAdd="queryProuctAdd" :params="paramProductAdd" :tablecolsAdd="tablecolsProductAdd" title="自产品档案添加"
|
|
|
- @addSuccess="queryProuctAdds" @addProduct="queryProuctAdd" @uploadData="queryUploadData" @closeDrawer="closeDrawer"
|
|
|
- :tradefield="data.tradefield" ref="addArchivesProduct"
|
|
|
+ <addProduct
|
|
|
+ v-if="
|
|
|
+ tool.checkAuth($route.name, 'productBillManage') &&
|
|
|
+ data.status === '新建' &&
|
|
|
+ isLeader
|
|
|
+ "
|
|
|
+ class="inline-16"
|
|
|
+ @productAdd="queryProuctAdd"
|
|
|
+ :params="paramProductAdd"
|
|
|
+ :tablecolsAdd="tablecolsProductAdd"
|
|
|
+ title="自产品档案添加"
|
|
|
+ @addSuccess="queryProuctAdds"
|
|
|
+ @addProduct="queryProuctAdd"
|
|
|
+ @uploadData="queryUploadData"
|
|
|
+ @closeDrawer="closeDrawer"
|
|
|
+ :tradefield="data.tradefield"
|
|
|
+ ref="addArchivesProduct"
|
|
|
>
|
|
|
<!--阀门选型-->
|
|
|
- <selectOption position="报价单" slot="optionSystem" style="margin-left: 10px" @handleParam="handleOptionParam" v-if="tool.checkAuth($route.name,'optionSystem')"></selectOption>
|
|
|
+ <selectOption
|
|
|
+ position="报价单"
|
|
|
+ slot="optionSystem"
|
|
|
+ style="margin-left: 10px"
|
|
|
+ @handleParam="handleOptionParam"
|
|
|
+ v-if="tool.checkAuth($route.name, 'optionSystem')"
|
|
|
+ ></selectOption>
|
|
|
+ <addSelectionList
|
|
|
+ style="margin-left: 10px"
|
|
|
+ slot="optionSystem"
|
|
|
+ sourcetable="sa_contract"
|
|
|
+ @showMessage="showMessage"
|
|
|
+ v-if="tool.checkAuth($route.name, 'addSelectionList')"
|
|
|
+ />
|
|
|
</addProduct>
|
|
|
- <exportFile v-if="tool.checkAuth($route.name,'export')" :param="params" :columns="tablecols" fileName="产品明细折扣"></exportFile>
|
|
|
+ <exportFile
|
|
|
+ v-if="tool.checkAuth($route.name, 'export')"
|
|
|
+ :param="params"
|
|
|
+ :columns="tablecols"
|
|
|
+ fileName="产品明细折扣"
|
|
|
+ ></exportFile>
|
|
|
<slot name="cooperate"></slot>
|
|
|
</div>
|
|
|
<SetOrder ref="setOrder"></SetOrder>
|
|
|
- <tableLayout checkbox="true" :layout="tablecols" :data="list" :width="true" :opwidth="200" height="calc(100vh - 380px)" :custom="true" fixedName="operation countPrice" @selectionChange="selectionChange">
|
|
|
+ <tableLayout
|
|
|
+ checkbox="true"
|
|
|
+ :layout="tablecols"
|
|
|
+ :data="list"
|
|
|
+ :width="true"
|
|
|
+ :opwidth="200"
|
|
|
+ height="calc(100vh - 380px)"
|
|
|
+ :custom="true"
|
|
|
+ fixedName="operation countPrice"
|
|
|
+ @selectionChange="selectionChange"
|
|
|
+ >
|
|
|
<template v-slot:customcol="scope">
|
|
|
<div v-if="scope.column.columnname == 'qty'">
|
|
|
- <el-input-number size="mini" v-model="scope.column.data.qty" @change="qtyChange($event,scope.column.data,scope.column.data.index)" :min="scope.column.data.orderminqty" :step="scope.column.data.orderaddqty" label="描述文字" :disabled="!tool.checkAuth($route.name,'productBillManage') || data.status !== '新建' || !isLeader"></el-input-number>
|
|
|
+ <el-input-number
|
|
|
+ size="mini"
|
|
|
+ v-model="scope.column.data.qty"
|
|
|
+ @change="
|
|
|
+ qtyChange($event, scope.column.data, scope.column.data.index)
|
|
|
+ "
|
|
|
+ :min="scope.column.data.orderminqty"
|
|
|
+ :step="scope.column.data.orderaddqty"
|
|
|
+ label="描述文字"
|
|
|
+ :disabled="
|
|
|
+ !tool.checkAuth($route.name, 'productBillManage') ||
|
|
|
+ data.status !== '新建' ||
|
|
|
+ !isLeader
|
|
|
+ "
|
|
|
+ ></el-input-number>
|
|
|
</div>
|
|
|
<div v-else-if="scope.column.columnname == 'attinfos'">
|
|
|
<previewImage
|
|
|
v-if="scope.column.data.attinfos[0]"
|
|
|
- style="width:38px;height:38px;margin:0px"
|
|
|
+ style="width: 38px; height: 38px; margin: 0px"
|
|
|
class="image"
|
|
|
:image="scope.column.data.attinfos[0]"
|
|
|
:list="scope.column.data.attinfos"
|
|
|
@@ -46,43 +143,112 @@
|
|
|
></previewImage>
|
|
|
</div>
|
|
|
<div v-else-if="scope.column.columnname == 'remarks'">
|
|
|
- <el-input size="mini" v-if="editIndex == scope.column.data.sa_contract_itemsid" v-model="form.remarks" @change="remarksChange($event,scope.column.data,scope.column.data.index)" ></el-input>
|
|
|
- <p v-else>{{$t(scope.column.data[scope.column.columnname])}}</p>
|
|
|
+ <el-input
|
|
|
+ size="mini"
|
|
|
+ v-if="editIndex == scope.column.data.sa_contract_itemsid"
|
|
|
+ v-model="form.remarks"
|
|
|
+ @change="
|
|
|
+ remarksChange(
|
|
|
+ $event,
|
|
|
+ scope.column.data,
|
|
|
+ scope.column.data.index
|
|
|
+ )
|
|
|
+ "
|
|
|
+ ></el-input>
|
|
|
+ <p v-else>{{ $t(scope.column.data[scope.column.columnname]) }}</p>
|
|
|
</div>
|
|
|
<div v-else-if="scope.column.columnname == 'itemno'">
|
|
|
- <span :style="scope.column.data.itemid?'':'color:red'">{{ scope.column.data.itemno }}</span>
|
|
|
+ <span :style="scope.column.data.itemid ? '' : 'color:red'">{{
|
|
|
+ scope.column.data.itemno
|
|
|
+ }}</span>
|
|
|
</div>
|
|
|
<div v-else-if="scope.column.columnname == 'discountrate'">
|
|
|
- <el-input size="mini"v-model="scope.column.data.discountrate" @change="discountrateChange($event,scope.column.data,scope.column.data.index)" :disabled="!tool.checkAuth($route.name,'productBillManage') || data.status !== '新建' || !isLeader"></el-input>
|
|
|
+ <el-input
|
|
|
+ size="mini"
|
|
|
+ v-model="scope.column.data.discountrate"
|
|
|
+ @change="
|
|
|
+ discountrateChange(
|
|
|
+ $event,
|
|
|
+ scope.column.data,
|
|
|
+ scope.column.data.index
|
|
|
+ )
|
|
|
+ "
|
|
|
+ :disabled="
|
|
|
+ !tool.checkAuth($route.name, 'productBillManage') ||
|
|
|
+ data.status !== '新建' ||
|
|
|
+ !isLeader
|
|
|
+ "
|
|
|
+ ></el-input>
|
|
|
</div>
|
|
|
<div v-else-if="scope.column.columnname == 'price'">
|
|
|
- <el-input size="mini" v-model="scope.column.data.price" @change="priceChange($event,scope.column.data,scope.column.data.index)" :disabled="!tool.checkAuth($route.name,'productBillManage') || data.status !== '新建' || !isLeader"></el-input>
|
|
|
+ <el-input
|
|
|
+ size="mini"
|
|
|
+ v-model="scope.column.data.price"
|
|
|
+ @change="
|
|
|
+ priceChange($event, scope.column.data, scope.column.data.index)
|
|
|
+ "
|
|
|
+ :disabled="
|
|
|
+ !tool.checkAuth($route.name, 'productBillManage') ||
|
|
|
+ data.status !== '新建' ||
|
|
|
+ !isLeader
|
|
|
+ "
|
|
|
+ ></el-input>
|
|
|
</div>
|
|
|
<div v-else-if="scope.column.columnname == 'countPrice'">
|
|
|
- <p>{{tool.formatAmount((scope.column.data.price * scope.column.data.qty),2)}}</p>
|
|
|
+ <p>
|
|
|
+ {{
|
|
|
+ tool.formatAmount(
|
|
|
+ scope.column.data.price * scope.column.data.qty,
|
|
|
+ 2
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </p>
|
|
|
</div>
|
|
|
<div v-else-if="scope.column.columnname == 'marketprice'">
|
|
|
- <p>{{tool.formatAmount((scope.column.data.marketprice),2)}}</p>
|
|
|
+ <p>{{ tool.formatAmount(scope.column.data.marketprice, 2) }}</p>
|
|
|
</div>
|
|
|
<div v-else-if="scope.column.columnname == 'brand'">
|
|
|
- {{scope.column.data[scope.column.columnname][0] && scope.column.data[scope.column.columnname][0].brandname}}
|
|
|
+ {{
|
|
|
+ scope.column.data[scope.column.columnname][0] &&
|
|
|
+ scope.column.data[scope.column.columnname][0].brandname
|
|
|
+ }}
|
|
|
</div>
|
|
|
<div v-else-if="scope.column.columnname == 'itemname'">
|
|
|
<div v-if="scope.column.data.sa_lectotypecfgid">
|
|
|
- <el-tooltip class="item" effect="dark" content="点击查看选型配置单" placement="top-start">
|
|
|
- <el-button size="small" type="text" @click="$refs.setOrder.onShow(scope.column.data.sa_lectotypecfgid)">{{ scope.column.data.itemname }}</el-button>
|
|
|
+ <el-tooltip
|
|
|
+ class="item"
|
|
|
+ effect="dark"
|
|
|
+ content="点击查看选型配置单"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ size="small"
|
|
|
+ type="text"
|
|
|
+ @click="
|
|
|
+ $refs.setOrder.onShow(scope.column.data.sa_lectotypecfgid)
|
|
|
+ "
|
|
|
+ >{{ scope.column.data.itemname }}</el-button
|
|
|
+ >
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
|
<div v-else>{{ scope.column.data.itemname }}</div>
|
|
|
</div>
|
|
|
- <p v-else>{{$t(scope.column.data[scope.column.columnname])}}</p>
|
|
|
- <p v-if="!scope.column.data[scope.column.columnname] && scope.column.data[[scope.column.columnname]] !== 0 && scope.column.columnname != 'operation' && scope.column.columnname != 'countPrice'">--</p>
|
|
|
- </template>
|
|
|
- <template v-slot:opreation="scope">
|
|
|
+ <p v-else>{{ $t(scope.column.data[scope.column.columnname]) }}</p>
|
|
|
+ <p
|
|
|
+ v-if="
|
|
|
+ !scope.column.data[scope.column.columnname] &&
|
|
|
+ scope.column.data[[scope.column.columnname]] !== 0 &&
|
|
|
+ scope.column.columnname != 'operation' &&
|
|
|
+ scope.column.columnname != 'countPrice'
|
|
|
+ "
|
|
|
+ >
|
|
|
+ --
|
|
|
+ </p>
|
|
|
</template>
|
|
|
+ <template v-slot:opreation="scope"> </template>
|
|
|
</tableLayout>
|
|
|
</div>
|
|
|
-<!-- <div style="margin-top:16px;text-align:right">
|
|
|
+ <!-- <div style="margin-top:16px;text-align:right">
|
|
|
<el-pagination
|
|
|
background
|
|
|
small
|
|
|
@@ -94,135 +260,150 @@
|
|
|
:total="total">
|
|
|
</el-pagination>
|
|
|
</div>-->
|
|
|
- <div style="height: 35px;margin-top: 20px">
|
|
|
+ <div style="height: 35px; margin-top: 20px">
|
|
|
<div style="float: left">合计(元):{{ totalPrice }}</div>
|
|
|
<div style="float: right">
|
|
|
<el-pagination
|
|
|
- background
|
|
|
- @size-change="handleSizeChange"
|
|
|
- @current-change="handleCurrentChange"
|
|
|
- :current-page="params.content.pageNumber"
|
|
|
- :page-sizes="[20, 50, 100, 200]"
|
|
|
- :page-size="100"
|
|
|
- layout="total,sizes, prev, pager, next, jumper"
|
|
|
- :total="total">
|
|
|
+ background
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ :current-page="params.content.pageNumber"
|
|
|
+ :page-sizes="[20, 50, 100, 200]"
|
|
|
+ :page-size="100"
|
|
|
+ layout="total,sizes, prev, pager, next, jumper"
|
|
|
+ :total="total"
|
|
|
+ >
|
|
|
</el-pagination>
|
|
|
</div>
|
|
|
-
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
// import edit from './editProduct'
|
|
|
-import tableLayout from '@/components/dynamic-table/index2'
|
|
|
+import tableLayout from "@/components/dynamic-table/index2";
|
|
|
// import addProduct from './addProduct'
|
|
|
-import previewImage from '@/components/previewImage/index'
|
|
|
-import addProductContract from '@/template/addProductContract/index'
|
|
|
-import uploadAllData from '@/components/uploadAllData/index'
|
|
|
-import exportFile from '@/components/export_file/index1'
|
|
|
-import addProduct from '@/template/addProduct'
|
|
|
-import SelectOption from '@/optionSystem/selectOption/add.vue'
|
|
|
-import SetOrder from '@/optionSystem/selectOption/components/setOrder.vue'
|
|
|
+import previewImage from "@/components/previewImage/index";
|
|
|
+import addProductContract from "@/template/addProductContract/index";
|
|
|
+import uploadAllData from "@/components/uploadAllData/index";
|
|
|
+import exportFile from "@/components/export_file/index1";
|
|
|
+import addProduct from "@/template/addProduct";
|
|
|
+import SelectOption from "@/optionSystem/selectOption/add.vue";
|
|
|
+import SetOrder from "@/optionSystem/selectOption/components/setOrder.vue";
|
|
|
+import addSelectionList from "@/SDrpManagement/QuotedPrice/detail/modules/productInventory/addSelectionList";
|
|
|
+
|
|
|
export default {
|
|
|
- components: {addProduct,previewImage,addProductContract,uploadAllData,tableLayout,exportFile,SelectOption,SetOrder},
|
|
|
- name: '',
|
|
|
- props:["data","isLeader"],
|
|
|
+ components: {
|
|
|
+ addProduct,
|
|
|
+ previewImage,
|
|
|
+ addProductContract,
|
|
|
+ uploadAllData,
|
|
|
+ tableLayout,
|
|
|
+ exportFile,
|
|
|
+ SelectOption,
|
|
|
+ SetOrder,
|
|
|
+ addSelectionList,
|
|
|
+ },
|
|
|
+ name: "",
|
|
|
+ props: ["data", "isLeader"],
|
|
|
data() {
|
|
|
return {
|
|
|
- list:[],
|
|
|
- delProductData:[],
|
|
|
+ list: [],
|
|
|
+ delProductData: [],
|
|
|
params: {
|
|
|
- "id": 20221122165302,
|
|
|
- "content": {
|
|
|
- "sa_contractid": '',
|
|
|
- "pageNumber": 1,
|
|
|
- "pageSize": 100,
|
|
|
- "where": {
|
|
|
- "condition": ""
|
|
|
- }
|
|
|
+ id: 20221122165302,
|
|
|
+ content: {
|
|
|
+ sa_contractid: "",
|
|
|
+ pageNumber: 1,
|
|
|
+ pageSize: 100,
|
|
|
+ where: {
|
|
|
+ condition: "",
|
|
|
+ },
|
|
|
},
|
|
|
},
|
|
|
form: {
|
|
|
- qty:'',
|
|
|
- discountrate:'',
|
|
|
- price:'',
|
|
|
+ qty: "",
|
|
|
+ discountrate: "",
|
|
|
+ price: "",
|
|
|
},
|
|
|
- tablecols:[],
|
|
|
- tablecolsAdd:[],
|
|
|
- tablecolsProductAdd:[],
|
|
|
- total:0,
|
|
|
- editIndex:'',
|
|
|
- totalPrice:0,
|
|
|
- paramProductAdd:{
|
|
|
- "id": 20221124093602,
|
|
|
- "content": {
|
|
|
- "sa_contractid": this.$route.query.id,
|
|
|
- "pageNumber": 1,
|
|
|
- "pageSize": 100,
|
|
|
- "where": {
|
|
|
- "condition": "",
|
|
|
- "istool": 0
|
|
|
- }
|
|
|
+ tablecols: [],
|
|
|
+ tablecolsAdd: [],
|
|
|
+ tablecolsProductAdd: [],
|
|
|
+ total: 0,
|
|
|
+ editIndex: "",
|
|
|
+ totalPrice: 0,
|
|
|
+ paramProductAdd: {
|
|
|
+ id: 20221124093602,
|
|
|
+ content: {
|
|
|
+ sa_contractid: this.$route.query.id,
|
|
|
+ pageNumber: 1,
|
|
|
+ pageSize: 100,
|
|
|
+ where: {
|
|
|
+ condition: "",
|
|
|
+ istool: 0,
|
|
|
+ },
|
|
|
},
|
|
|
- }
|
|
|
+ },
|
|
|
};
|
|
|
},
|
|
|
- computed:{
|
|
|
- },
|
|
|
- watch:{
|
|
|
- "data":function (val){
|
|
|
- if(val){
|
|
|
- this.listData()
|
|
|
+ computed: {},
|
|
|
+ watch: {
|
|
|
+ data: function (val) {
|
|
|
+ if (val) {
|
|
|
+ this.listData();
|
|
|
}
|
|
|
- }
|
|
|
- },
|
|
|
- created () {
|
|
|
- if (this.$route.query.id) this.listData()
|
|
|
- this.tablecols = this.tool.tabelCol(this.$route.name).productBillnoTable.tablecols
|
|
|
- this.tablecolsAdd = this.tool.tabelCol(this.$route.name).addProuctProject.tablecols
|
|
|
- this.tablecolsProductAdd = this.tool.tabelCol(this.$route.name).productArchivesTable.tablecols
|
|
|
+ },
|
|
|
},
|
|
|
- mounted() {
|
|
|
-
|
|
|
+ created() {
|
|
|
+ if (this.$route.query.id) this.listData();
|
|
|
+ this.tablecols = this.tool.tabelCol(
|
|
|
+ this.$route.name
|
|
|
+ ).productBillnoTable.tablecols;
|
|
|
+ this.tablecolsAdd = this.tool.tabelCol(
|
|
|
+ this.$route.name
|
|
|
+ ).addProuctProject.tablecols;
|
|
|
+ this.tablecolsProductAdd = this.tool.tabelCol(
|
|
|
+ this.$route.name
|
|
|
+ ).productArchivesTable.tablecols;
|
|
|
},
|
|
|
+ mounted() {},
|
|
|
methods: {
|
|
|
- handleOptionParam (param) {
|
|
|
- param.content.enterprisename = this.data.enterprisename
|
|
|
- param.content.projectname = this.data.projectname
|
|
|
- param.content.sourcetable = 'sa_contract'
|
|
|
- param.content.source = `项目合同:${this.data.billno}`
|
|
|
+ handleOptionParam(param) {
|
|
|
+ param.content.enterprisename = this.data.enterprisename;
|
|
|
+ param.content.projectname = this.data.projectname;
|
|
|
+ param.content.sourcetable = "sa_contract";
|
|
|
+ param.content.source = `项目合同:${this.data.billno}`;
|
|
|
},
|
|
|
- async listData(){
|
|
|
- this.totalPrice = 0
|
|
|
- this.params.content.sa_contractid = this.$route.query.id
|
|
|
- const res = await this.$api.requested(this.params)
|
|
|
- res.data.forEach((e,index)=>{
|
|
|
- res.data[index].discountrate = Math.round((res.data[index].discountrate *100)*100)/100
|
|
|
- this.totalPrice = this.totalPrice + res.data[index].amount
|
|
|
- })
|
|
|
- this.totalPrice = this.tool.formatAmount(this.totalPrice,2)
|
|
|
- this.list = res.data
|
|
|
- this.total = res.total
|
|
|
- this.$refs.addProduct.doLayout()
|
|
|
- this.$emit('priceChange')
|
|
|
+ async listData() {
|
|
|
+ this.totalPrice = 0;
|
|
|
+ this.params.content.sa_contractid = this.$route.query.id;
|
|
|
+ const res = await this.$api.requested(this.params);
|
|
|
+ res.data.forEach((e, index) => {
|
|
|
+ res.data[index].discountrate =
|
|
|
+ Math.round(res.data[index].discountrate * 100 * 100) / 100;
|
|
|
+ this.totalPrice = this.totalPrice + res.data[index].amount;
|
|
|
+ });
|
|
|
+ this.totalPrice = this.tool.formatAmount(this.totalPrice, 2);
|
|
|
+ this.list = res.data;
|
|
|
+ this.total = res.total;
|
|
|
+ this.$refs.addProduct.doLayout();
|
|
|
+ this.$emit("priceChange");
|
|
|
},
|
|
|
/*修改数量*/
|
|
|
- qtyChange (num,data,index) {
|
|
|
- data.qty = Math.round(num *100)/100
|
|
|
- this.$set(this.list,index,data)
|
|
|
- this.save(data)
|
|
|
+ qtyChange(num, data, index) {
|
|
|
+ data.qty = Math.round(num * 100) / 100;
|
|
|
+ this.$set(this.list, index, data);
|
|
|
+ this.save(data);
|
|
|
},
|
|
|
handleChange(num) {
|
|
|
console.log(num);
|
|
|
-
|
|
|
},
|
|
|
/*修改备注*/
|
|
|
- remarksChange (val,data,index){
|
|
|
- this.$set(this.list,index,data)
|
|
|
+ remarksChange(val, data, index) {
|
|
|
+ this.$set(this.list, index, data);
|
|
|
},
|
|
|
/*修改折扣*/
|
|
|
- discountrateChange (num,data,index) {
|
|
|
+ discountrateChange(num, data, index) {
|
|
|
// if (num>100){
|
|
|
// data.discountrate = 100
|
|
|
// }else if (num < 0){
|
|
|
@@ -230,17 +411,18 @@ export default {
|
|
|
// }else {
|
|
|
// data.discountrate = Math.round(num *100)/100
|
|
|
// }
|
|
|
- if (num < 0){
|
|
|
- data.discountrate = 0
|
|
|
- }else {
|
|
|
- data.discountrate = Math.round(num *100)/100
|
|
|
+ if (num < 0) {
|
|
|
+ data.discountrate = 0;
|
|
|
+ } else {
|
|
|
+ data.discountrate = Math.round(num * 100) / 100;
|
|
|
}
|
|
|
- data.price = Math.round((data.discountrate / 100 * data.marketprice)*100)/100
|
|
|
- this.$set(this.list,index,data)
|
|
|
- this.save(data)
|
|
|
+ data.price =
|
|
|
+ Math.round((data.discountrate / 100) * data.marketprice * 100) / 100;
|
|
|
+ this.$set(this.list, index, data);
|
|
|
+ this.save(data);
|
|
|
},
|
|
|
/*修改价格*/
|
|
|
- priceChange (num,data,index) {
|
|
|
+ priceChange(num, data, index) {
|
|
|
// if (num > data.marketprice){
|
|
|
// data.price = data.marketprice
|
|
|
// }else if (num < 0){
|
|
|
@@ -248,260 +430,284 @@ export default {
|
|
|
// }else {
|
|
|
// data.price = Math.round(num * 100)/100
|
|
|
// }
|
|
|
- if (num < 0){
|
|
|
- data.price = 0
|
|
|
- }else {
|
|
|
- data.price = Math.round(num * 100)/100
|
|
|
+ if (num < 0) {
|
|
|
+ data.price = 0;
|
|
|
+ } else {
|
|
|
+ data.price = Math.round(num * 100) / 100;
|
|
|
}
|
|
|
- data.discountrate = Math.round((data.price / data.marketprice * 100)*100)/100
|
|
|
- this.$set(this.list,index,data)
|
|
|
- this.save(data)
|
|
|
+ data.discountrate =
|
|
|
+ Math.round((data.price / data.marketprice) * 100 * 100) / 100;
|
|
|
+ this.$set(this.list, index, data);
|
|
|
+ this.save(data);
|
|
|
},
|
|
|
- async save (data) {
|
|
|
+ async save(data) {
|
|
|
let res = await this.$api.requested({
|
|
|
- "id": 20221122200302,
|
|
|
- "content": {
|
|
|
- "sa_contractid":this.$route.query.id,
|
|
|
- "items": [
|
|
|
+ id: 20221122200302,
|
|
|
+ content: {
|
|
|
+ sa_contractid: this.$route.query.id,
|
|
|
+ items: [
|
|
|
{
|
|
|
- marketprice:data.marketprice,
|
|
|
- itemid:data.itemid,
|
|
|
- sa_contract_itemsid:data.sa_contract_itemsid,
|
|
|
- qty:data.qty,
|
|
|
- discountrate:(data.discountrate/100).toFixed(4),
|
|
|
- price:data.price,
|
|
|
- type:data.type
|
|
|
- }
|
|
|
- ]
|
|
|
+ marketprice: data.marketprice,
|
|
|
+ itemid: data.itemid,
|
|
|
+ sa_contract_itemsid: data.sa_contract_itemsid,
|
|
|
+ qty: data.qty,
|
|
|
+ discountrate: (data.discountrate / 100).toFixed(4),
|
|
|
+ price: data.price,
|
|
|
+ type: data.type,
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
- })
|
|
|
- this.tool.showMessage(res,() => {
|
|
|
- this.editIndex = ''
|
|
|
- this.listData()
|
|
|
- this.$emit('editSuccess',res.data.signamount)
|
|
|
- })
|
|
|
+ });
|
|
|
+ this.tool.showMessage(res, () => {
|
|
|
+ this.editIndex = "";
|
|
|
+ this.listData();
|
|
|
+ this.$emit("editSuccess", res.data.signamount);
|
|
|
+ });
|
|
|
},
|
|
|
handleSizeChange(val) {
|
|
|
// console.log(`每页 ${val} 条`);
|
|
|
- this.params.content.pageSize = val
|
|
|
- this.listData()
|
|
|
+ this.params.content.pageSize = val;
|
|
|
+ this.listData();
|
|
|
},
|
|
|
handleCurrentChange(val) {
|
|
|
// console.log(`当前页: ${val}`);
|
|
|
- this.params.content.pageNumber = val
|
|
|
- this.listData()
|
|
|
+ this.params.content.pageNumber = val;
|
|
|
+ this.listData();
|
|
|
},
|
|
|
|
|
|
/*拉取数据*/
|
|
|
- handlePullApi (pullApi) {
|
|
|
- pullApi.content = JSON.parse(JSON.stringify(this.params.content))
|
|
|
- pullApi.id = 20221122165302
|
|
|
- pullApi.content.sa_contractid = this.$route.query.id
|
|
|
+ handlePullApi(pullApi) {
|
|
|
+ pullApi.content = JSON.parse(JSON.stringify(this.params.content));
|
|
|
+ pullApi.id = 20221122165302;
|
|
|
+ pullApi.content.sa_contractid = this.$route.query.id;
|
|
|
},
|
|
|
/*一键删除*/
|
|
|
- handleDelApi (delApi,data) {
|
|
|
- delApi.id = 20221123164502
|
|
|
+ handleDelApi(delApi, data) {
|
|
|
+ delApi.id = 20221123164502;
|
|
|
delApi.content = {
|
|
|
- "sa_contractid":this.$route.query.id,
|
|
|
- "sa_contract_itemsids": data,
|
|
|
- "pageNumber":0,
|
|
|
- "pageSize":0
|
|
|
- }
|
|
|
- this.$refs.addProduct.listData()
|
|
|
+ sa_contractid: this.$route.query.id,
|
|
|
+ sa_contract_itemsids: data,
|
|
|
+ pageNumber: 0,
|
|
|
+ pageSize: 0,
|
|
|
+ };
|
|
|
+ this.$refs.addProduct.listData();
|
|
|
},
|
|
|
|
|
|
-
|
|
|
/*一键添加*/
|
|
|
- async queryUploadData(uploadApi,data){
|
|
|
- uploadApi.id = 20221123164402
|
|
|
+ async queryUploadData(uploadApi, data) {
|
|
|
+ uploadApi.id = 20221123164402;
|
|
|
uploadApi.content = {
|
|
|
- "sa_contractid": this.$route.query.id,
|
|
|
- "items": data.map(e=>{
|
|
|
+ sa_contractid: this.$route.query.id,
|
|
|
+ items: data.map((e) => {
|
|
|
return {
|
|
|
- "itemid": e.itemid,
|
|
|
- "price": e.price || (e.marketprice * 1).toFixed(4),
|
|
|
- "qty": e.qty || e.orderminqty,
|
|
|
- "marketprice":e.marketprice,
|
|
|
- "discountrate":e.discountrate || 1,
|
|
|
- "type":'指定单价'
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- this.$refs.addProduct.listData()
|
|
|
- this.$emit('onSuccess')
|
|
|
+ itemid: e.itemid,
|
|
|
+ price: e.price || (e.marketprice * 1).toFixed(4),
|
|
|
+ qty: e.qty || e.orderminqty,
|
|
|
+ marketprice: e.marketprice,
|
|
|
+ discountrate: e.discountrate || 1,
|
|
|
+ type: "指定单价",
|
|
|
+ };
|
|
|
+ }),
|
|
|
+ };
|
|
|
+ this.$refs.addProduct.listData();
|
|
|
+ this.$emit("onSuccess");
|
|
|
+ },
|
|
|
+ showMessage(res) {
|
|
|
+ this.tool.showMessage(res, () => {
|
|
|
+ this.listData();
|
|
|
+ this.$refs.addProduct.listData();
|
|
|
+ this.$emit("onSuccess");
|
|
|
+ });
|
|
|
},
|
|
|
|
|
|
/*批量添加校验是否重复*/
|
|
|
- async queryProuctAdds(data){
|
|
|
- let item = data.map(item => {
|
|
|
+ async queryProuctAdds(data) {
|
|
|
+ let item = data.map((item) => {
|
|
|
return {
|
|
|
- "itemid": item.itemid,
|
|
|
- "price": item.price || (item.marketprice * 1).toFixed(4),
|
|
|
- "qty": item.qty || item.orderminqty,
|
|
|
- "marketprice":item.marketprice,
|
|
|
- "discountrate":item.discountrate || 1,
|
|
|
- "type":'指定单价'
|
|
|
- }
|
|
|
- })
|
|
|
- let checkItem = []
|
|
|
- item.forEach((item,index)=>{
|
|
|
- checkItem[index] = item.itemid
|
|
|
- })
|
|
|
+ itemid: item.itemid,
|
|
|
+ price: item.price || (item.marketprice * 1).toFixed(4),
|
|
|
+ qty: item.qty || item.orderminqty,
|
|
|
+ marketprice: item.marketprice,
|
|
|
+ discountrate: item.discountrate || 1,
|
|
|
+ type: "指定单价",
|
|
|
+ };
|
|
|
+ });
|
|
|
+ let checkItem = [];
|
|
|
+ item.forEach((item, index) => {
|
|
|
+ checkItem[index] = item.itemid;
|
|
|
+ });
|
|
|
const res = await this.$api.requested({
|
|
|
- "id": 20230221151903,
|
|
|
- "content": {
|
|
|
- "sa_contractid": this.$route.query.id,
|
|
|
- "itemids":checkItem
|
|
|
+ id: 20230221151903,
|
|
|
+ content: {
|
|
|
+ sa_contractid: this.$route.query.id,
|
|
|
+ itemids: checkItem,
|
|
|
},
|
|
|
- })
|
|
|
- if (!res.data){
|
|
|
+ });
|
|
|
+ if (!res.data) {
|
|
|
/*直接添加*/
|
|
|
- this.addProducts(item)
|
|
|
- }else {
|
|
|
+ this.addProducts(item);
|
|
|
+ } else {
|
|
|
/*询问是否覆盖*/
|
|
|
- this.checkItems(item)
|
|
|
+ this.checkItems(item);
|
|
|
}
|
|
|
},
|
|
|
checkItems(data) {
|
|
|
- this.$confirm(this.$t('商品已存在, 是否更新最新价格')+'?', this.$t('提示'), {
|
|
|
- confirmButtonText: this.$t('确定'),
|
|
|
- cancelButtonText: this.$t('取消'),
|
|
|
- closeOnClickModal:false,
|
|
|
- type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- this.addProducts(data)
|
|
|
- }).catch(() => {
|
|
|
- this.$message({
|
|
|
- type: 'info',
|
|
|
- message: this.$t('已取消添加')
|
|
|
+ this.$confirm(
|
|
|
+ this.$t("商品已存在, 是否更新最新价格") + "?",
|
|
|
+ this.$t("提示"),
|
|
|
+ {
|
|
|
+ confirmButtonText: this.$t("确定"),
|
|
|
+ cancelButtonText: this.$t("取消"),
|
|
|
+ closeOnClickModal: false,
|
|
|
+ type: "warning",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ .then(() => {
|
|
|
+ this.addProducts(data);
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: "info",
|
|
|
+ message: this.$t("已取消添加"),
|
|
|
+ });
|
|
|
});
|
|
|
- });
|
|
|
},
|
|
|
/*批量添加商品*/
|
|
|
- async addProducts (data) {
|
|
|
+ async addProducts(data) {
|
|
|
let res = await this.$api.requested({
|
|
|
- "id": 20221123164402,
|
|
|
- "content": {
|
|
|
- "sa_contractid": this.$route.query.id,
|
|
|
- "items": data
|
|
|
+ id: 20221123164402,
|
|
|
+ content: {
|
|
|
+ sa_contractid: this.$route.query.id,
|
|
|
+ items: data,
|
|
|
},
|
|
|
- })
|
|
|
- this.tool.showMessage(res,() => {
|
|
|
- this.$emit('onSuccess')
|
|
|
- this.listData()
|
|
|
- this.$refs.addProduct.listData()
|
|
|
- this.$refs.addArchivesProduct.listData()
|
|
|
- })
|
|
|
+ });
|
|
|
+ this.tool.showMessage(res, () => {
|
|
|
+ this.$emit("onSuccess");
|
|
|
+ this.listData();
|
|
|
+ this.$refs.addProduct.listData();
|
|
|
+ this.$refs.addArchivesProduct.listData();
|
|
|
+ });
|
|
|
},
|
|
|
/*单个商品添加校验*/
|
|
|
- async queryProuctAdd(data){
|
|
|
+ async queryProuctAdd(data) {
|
|
|
const res = await this.$api.requested({
|
|
|
- "id": 20230221151903,
|
|
|
- "content": {
|
|
|
- "sa_contractid": this.$route.query.id,
|
|
|
- "itemids":[data.itemid]
|
|
|
+ id: 20230221151903,
|
|
|
+ content: {
|
|
|
+ sa_contractid: this.$route.query.id,
|
|
|
+ itemids: [data.itemid],
|
|
|
},
|
|
|
- })
|
|
|
- if (!res.data){
|
|
|
- this.addProduct(data)
|
|
|
- }else {
|
|
|
- this.checkItem(data)
|
|
|
+ });
|
|
|
+ if (!res.data) {
|
|
|
+ this.addProduct(data);
|
|
|
+ } else {
|
|
|
+ this.checkItem(data);
|
|
|
}
|
|
|
},
|
|
|
checkItem(data) {
|
|
|
- this.$confirm(this.$t('商品已存在, 是否更新最新价格')+'?', this.$t('提示'), {
|
|
|
- confirmButtonText: this.$t('确定'),
|
|
|
- cancelButtonText: this.$t('取消'),
|
|
|
- closeOnClickModal:false,
|
|
|
- type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- this.addProduct(data)
|
|
|
- }).catch(() => {
|
|
|
- this.$message({
|
|
|
- type: 'info',
|
|
|
- message: this.$t('已取消添加')
|
|
|
+ this.$confirm(
|
|
|
+ this.$t("商品已存在, 是否更新最新价格") + "?",
|
|
|
+ this.$t("提示"),
|
|
|
+ {
|
|
|
+ confirmButtonText: this.$t("确定"),
|
|
|
+ cancelButtonText: this.$t("取消"),
|
|
|
+ closeOnClickModal: false,
|
|
|
+ type: "warning",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ .then(() => {
|
|
|
+ this.addProduct(data);
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: "info",
|
|
|
+ message: this.$t("已取消添加"),
|
|
|
+ });
|
|
|
});
|
|
|
- });
|
|
|
},
|
|
|
/*单个添加商品*/
|
|
|
- async addProduct (data) {
|
|
|
- let price = 0
|
|
|
- if (!data.price){
|
|
|
- price = (data.marketprice * 1).toFixed(4)
|
|
|
+ async addProduct(data) {
|
|
|
+ let price = 0;
|
|
|
+ if (!data.price) {
|
|
|
+ price = (data.marketprice * 1).toFixed(4);
|
|
|
}
|
|
|
let res = await this.$api.requested({
|
|
|
- "id": 20221123164402,
|
|
|
- "content": {
|
|
|
- "sa_contractid": this.$route.query.id,
|
|
|
- "items": [
|
|
|
+ id: 20221123164402,
|
|
|
+ content: {
|
|
|
+ sa_contractid: this.$route.query.id,
|
|
|
+ items: [
|
|
|
{
|
|
|
- "itemid": data.itemid,
|
|
|
- "price": data.price || price,
|
|
|
- "qty": data.qty || data.orderminqty,
|
|
|
- "marketprice":data.marketprice,
|
|
|
- "discountrate":data.discountrate || 1,
|
|
|
- "type":'指定单价'
|
|
|
- }
|
|
|
- ]
|
|
|
+ itemid: data.itemid,
|
|
|
+ price: data.price || price,
|
|
|
+ qty: data.qty || data.orderminqty,
|
|
|
+ marketprice: data.marketprice,
|
|
|
+ discountrate: data.discountrate || 1,
|
|
|
+ type: "指定单价",
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
- })
|
|
|
- this.tool.showMessage(res,() => {
|
|
|
- this.$refs.addProduct.listData()
|
|
|
- this.$refs.addArchivesProduct.listData()
|
|
|
- this.listData()
|
|
|
- this.$emit('onSuccess')
|
|
|
- })
|
|
|
+ });
|
|
|
+ this.tool.showMessage(res, () => {
|
|
|
+ this.$refs.addProduct.listData();
|
|
|
+ this.$refs.addArchivesProduct.listData();
|
|
|
+ this.listData();
|
|
|
+ this.$emit("onSuccess");
|
|
|
+ });
|
|
|
},
|
|
|
- selectionChange(val){
|
|
|
- this.delProductData = []
|
|
|
- val.forEach((item,index) => {
|
|
|
- this.delProductData[index] = item.sa_contract_itemsid
|
|
|
- })
|
|
|
+ selectionChange(val) {
|
|
|
+ this.delProductData = [];
|
|
|
+ val.forEach((item, index) => {
|
|
|
+ this.delProductData[index] = item.sa_contract_itemsid;
|
|
|
+ });
|
|
|
},
|
|
|
/*批量删除判断*/
|
|
|
onDelProduct() {
|
|
|
- this.$confirm(this.$t('此操作将删除这些商品, 是否继续')+'?', this.$t('提示'), {
|
|
|
- confirmButtonText: this.$t('确定'),
|
|
|
- cancelButtonText: this.$t('取消'),
|
|
|
- type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- this.delProduct()
|
|
|
- }).catch(() => {
|
|
|
- this.$message({
|
|
|
- type: 'info',
|
|
|
- message: this.$t('取消删除')
|
|
|
+ this.$confirm(
|
|
|
+ this.$t("此操作将删除这些商品, 是否继续") + "?",
|
|
|
+ this.$t("提示"),
|
|
|
+ {
|
|
|
+ confirmButtonText: this.$t("确定"),
|
|
|
+ cancelButtonText: this.$t("取消"),
|
|
|
+ type: "warning",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ .then(() => {
|
|
|
+ this.delProduct();
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: "info",
|
|
|
+ message: this.$t("取消删除"),
|
|
|
+ });
|
|
|
});
|
|
|
- });
|
|
|
},
|
|
|
/*批量删除商品*/
|
|
|
- async delProduct(){
|
|
|
+ async delProduct() {
|
|
|
const res = await this.$api.requested({
|
|
|
- "id": 20221123164502,
|
|
|
- "content": {
|
|
|
- "sa_contractid":this.$route.query.id,
|
|
|
- "sa_contract_itemsids":this.delProductData
|
|
|
+ id: 20221123164502,
|
|
|
+ content: {
|
|
|
+ sa_contractid: this.$route.query.id,
|
|
|
+ sa_contract_itemsids: this.delProductData,
|
|
|
},
|
|
|
- })
|
|
|
- this.tool.showMessage(res,()=>{
|
|
|
- this.listData()
|
|
|
- this.$emit("delSuccess")
|
|
|
- })
|
|
|
+ });
|
|
|
+ this.tool.showMessage(res, () => {
|
|
|
+ this.listData();
|
|
|
+ this.$emit("delSuccess");
|
|
|
+ });
|
|
|
},
|
|
|
- addAll(){
|
|
|
- this.listData()
|
|
|
- this.$emit('onSuccess')
|
|
|
+ addAll() {
|
|
|
+ this.listData();
|
|
|
+ this.$emit("onSuccess");
|
|
|
+ },
|
|
|
+ closeDrawer() {
|
|
|
+ this.listData();
|
|
|
+ this.$emit("delSuccess");
|
|
|
},
|
|
|
- closeDrawer(){
|
|
|
- this.listData()
|
|
|
- this.$emit("delSuccess")
|
|
|
- }
|
|
|
-
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
-/deep/ .el-input.is-disabled .el-input__inner{
|
|
|
+/deep/ .el-input.is-disabled .el-input__inner {
|
|
|
color: #666666;
|
|
|
}
|
|
|
</style>
|