|
@@ -3,6 +3,28 @@
|
|
<div class="purchasFuelNewMonitor">
|
|
<div class="purchasFuelNewMonitor">
|
|
<div class="tableTop">
|
|
<div class="tableTop">
|
|
<el-form :inline="true" style="margin-top :5px">
|
|
<el-form :inline="true" style="margin-top :5px">
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="screen"
|
|
|
|
+ placeholder="请选择需筛选的内容"
|
|
|
|
+ clearable
|
|
|
|
+ @change="changeScreen"
|
|
|
|
+ style="width:150px"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in options"
|
|
|
|
+ :key="item.value"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ >
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-input
|
|
|
|
+ style="width:200px"
|
|
|
|
+ v-model="input"
|
|
|
|
+ placeholder="请输入查询条件"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
<label class="el-form-item__label" style="width: auto;"
|
|
<label class="el-form-item__label" style="width: auto;"
|
|
>订单时间:</label
|
|
>订单时间:</label
|
|
@@ -11,6 +33,7 @@
|
|
v-model="startTime"
|
|
v-model="startTime"
|
|
type="datetime"
|
|
type="datetime"
|
|
placeholder="选择日期时间"
|
|
placeholder="选择日期时间"
|
|
|
|
+ style="width:200px"
|
|
>
|
|
>
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
<span>至</span>
|
|
<span>至</span>
|
|
@@ -18,20 +41,21 @@
|
|
v-model="endTime"
|
|
v-model="endTime"
|
|
type="datetime"
|
|
type="datetime"
|
|
placeholder="选择日期时间"
|
|
placeholder="选择日期时间"
|
|
|
|
+ style="width:200px"
|
|
>
|
|
>
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
<el-button type="primary" class="btn" @click="onclick">
|
|
<el-button type="primary" class="btn" @click="onclick">
|
|
- <i class="el-icon-search"></i>查询
|
|
|
|
|
|
+ <i class="el-icon-search"></i>
|
|
</el-button>
|
|
</el-button>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
- <el-button type="primary" @click="exportData()"
|
|
|
|
- ><i class="el-icon-download"></i>导出(Excel)</el-button
|
|
|
|
|
|
+ <el-button type="primary" @click="exportAllReportToExcel"
|
|
|
|
+ ><i class="el-icon-download"></i>Excel</el-button
|
|
>
|
|
>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
<el-button type="primary" @click="refresh">
|
|
<el-button type="primary" @click="refresh">
|
|
- <i class="el-icon-refresh"></i>刷新
|
|
|
|
|
|
+ <i class="el-icon-refresh"></i>
|
|
</el-button>
|
|
</el-button>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
@@ -42,19 +66,27 @@
|
|
style="width: 100px;"
|
|
style="width: 100px;"
|
|
></el-input>
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <span style="margin-left: 1rem">合计件数:</span>
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="totalNumber"
|
|
|
|
+ :disabled="true"
|
|
|
|
+ style="width: 100px;"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
</div>
|
|
</div>
|
|
<div class="table">
|
|
<div class="table">
|
|
<el-table
|
|
<el-table
|
|
:data="tableData"
|
|
:data="tableData"
|
|
:span-method="objectSpanMethod"
|
|
:span-method="objectSpanMethod"
|
|
|
|
+ ref="tableRef"
|
|
border
|
|
border
|
|
stripe
|
|
stripe
|
|
@filter-change="filterChange"
|
|
@filter-change="filterChange"
|
|
style="width: 100%; margin-top: 20px"
|
|
style="width: 100%; margin-top: 20px"
|
|
- max-height="500px"
|
|
|
|
|
|
+ max-height="800px"
|
|
@cell-click="cellClik"
|
|
@cell-click="cellClik"
|
|
- @cell-mouse-leave="cellLeaveMouse"
|
|
|
|
>
|
|
>
|
|
<el-table-column
|
|
<el-table-column
|
|
width="50"
|
|
width="50"
|
|
@@ -94,13 +126,13 @@
|
|
@select="handleSelectCarrier(scope.row, scope.$index)"
|
|
@select="handleSelectCarrier(scope.row, scope.$index)"
|
|
:disabled="scope.row.isCarrierShow != 1"
|
|
:disabled="scope.row.isCarrierShow != 1"
|
|
>
|
|
>
|
|
- <el-button
|
|
|
|
- @click="updateTruckCarrier(row)"
|
|
|
|
- type="primary"
|
|
|
|
- v-if="scope.row.isCarrierShow == 1"
|
|
|
|
- >提交</el-button
|
|
|
|
- >
|
|
|
|
</el-autocomplete>
|
|
</el-autocomplete>
|
|
|
|
+ <el-button
|
|
|
|
+ @click="updateTruckCarrier(scope.row)"
|
|
|
|
+ type="primary"
|
|
|
|
+ v-if="scope.row.isCarrierShow == 1"
|
|
|
|
+ >提交</el-button
|
|
|
|
+ >
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column
|
|
<el-table-column
|
|
@@ -156,6 +188,20 @@
|
|
label="收货地址"
|
|
label="收货地址"
|
|
:width="flexColumnWidth('addressPlace', tableData, 'max')"
|
|
:width="flexColumnWidth('addressPlace', tableData, 'max')"
|
|
>
|
|
>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-input
|
|
|
|
+ style="width:300px"
|
|
|
|
+ v-model="scope.row.addressPlace"
|
|
|
|
+ placeholder="请输入收货地址"
|
|
|
|
+ :disabled="scope.row.isAddressShow != 1"
|
|
|
|
+ ></el-input>
|
|
|
|
+ <el-button
|
|
|
|
+ @click="updateAddress(scope.row)"
|
|
|
|
+ type="primary"
|
|
|
|
+ v-if="scope.row.isAddressShow == 1"
|
|
|
|
+ >选择</el-button
|
|
|
|
+ >
|
|
|
|
+ </template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column prop="orderStatus" label="运单状态" align="center">
|
|
<el-table-column prop="orderStatus" label="运单状态" align="center">
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -168,6 +214,34 @@
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column prop="materialSpe" label="物资规格" align="center">
|
|
<el-table-column prop="materialSpe" label="物资规格" align="center">
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="materialNum"
|
|
|
|
+ label="物资件数"
|
|
|
|
+ align="center"
|
|
|
|
+ width="150px"
|
|
|
|
+ >
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <button
|
|
|
|
+ type="primary"
|
|
|
|
+ @click="scope.row.materialNum--"
|
|
|
|
+ v-if="scope.row.isNumShow == 1"
|
|
|
|
+ style="height:40px"
|
|
|
|
+ >
|
|
|
|
+ -
|
|
|
|
+ </button>
|
|
|
|
+ <input
|
|
|
|
+ v-model="scope.row.materialNum"
|
|
|
|
+ disabled
|
|
|
|
+ style="width:40px;height: 40px;font-size:16px;line-height: 40px;text-align: center;"
|
|
|
|
+ />
|
|
|
|
+ <el-button
|
|
|
|
+ type="primary"
|
|
|
|
+ @click="updateBillOrder(scope.row)"
|
|
|
|
+ v-if="scope.row.isNumShow == 1"
|
|
|
|
+ >提交</el-button
|
|
|
|
+ >
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
<el-table-column prop="grossWeight" label="毛重"> </el-table-column>
|
|
<el-table-column prop="grossWeight" label="毛重"> </el-table-column>
|
|
<el-table-column
|
|
<el-table-column
|
|
prop="grossWeightTime"
|
|
prop="grossWeightTime"
|
|
@@ -230,11 +304,19 @@
|
|
>
|
|
>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column prop="truckNo" label="车序号"> </el-table-column>
|
|
<el-table-column prop="truckNo" label="车序号"> </el-table-column>
|
|
- <el-table-column prop="consigneeTel" label="收货客户电话">
|
|
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="consigneeTel"
|
|
|
|
+ label="收货客户电话"
|
|
|
|
+ :width="flexColumnWidth('consigneeTel', tableData, 'max')"
|
|
|
|
+ >
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column prop="isSelfMention" label="是否自提" align="center">
|
|
<el-table-column prop="isSelfMention" label="是否自提" align="center">
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="saleOrderStatus" label="销售订单状态">
|
|
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="saleOrderStatus"
|
|
|
|
+ label="销售订单状态"
|
|
|
|
+ :width="flexColumnWidth('saleOrderStatus', tableData, 'max')"
|
|
|
|
+ >
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column
|
|
<el-table-column
|
|
label="操作"
|
|
label="操作"
|
|
@@ -246,13 +328,103 @@
|
|
<el-button
|
|
<el-button
|
|
type="text"
|
|
type="text"
|
|
size="small"
|
|
size="small"
|
|
- @click="deleteEasEntryId(scope.row)"
|
|
|
|
|
|
+ @click="closeEasEntryId(scope.row)"
|
|
>关闭分录</el-button
|
|
>关闭分录</el-button
|
|
>
|
|
>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="操作"
|
|
|
|
+ fixed="right"
|
|
|
|
+ width="120px"
|
|
|
|
+ align="center"
|
|
|
|
+ >
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-button
|
|
|
|
+ type="text"
|
|
|
|
+ size="small"
|
|
|
|
+ @click="deleteEasEntryId(scope.row)"
|
|
|
|
+ >关闭车辆</el-button
|
|
|
|
+ >
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div class="address">
|
|
|
|
+ <!-- 收货地址弹出框 -->
|
|
|
|
+ <el-dialog title="收货地址" :visible.sync="drawer" width="90%">
|
|
|
|
+ <el-form :inline="true">
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <label class="el-form-item__label" style="width: auto;">省</label>
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="province"
|
|
|
|
+ filterable
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ @change="onchangeProvince"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in provinceList"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ :label="item.addressProvince"
|
|
|
|
+ :value="item.id"
|
|
|
|
+ ></el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <label class="el-form-item__label" style="width: auto;">市</label>
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="city"
|
|
|
|
+ filterable
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ @change="onchangeCity"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in cityList"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ :label="item.addressDistrict"
|
|
|
|
+ :value="item.id"
|
|
|
|
+ ></el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <label class="el-form-item__label" style="width: auto;"
|
|
|
|
+ >县(区)</label
|
|
|
|
+ >
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="county"
|
|
|
|
+ filterable
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ @change="onchangeCounty"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in countyList"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ :label="item.addressTown"
|
|
|
|
+ :value="item.id"
|
|
|
|
+ ></el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <label class="el-form-item__label" style="width: auto;"
|
|
|
|
+ >具体收货地址</label
|
|
|
|
+ >
|
|
|
|
+ <el-autocomplete
|
|
|
|
+ class="inline-input"
|
|
|
|
+ v-model="place"
|
|
|
|
+ :fetch-suggestions="querySearch1"
|
|
|
|
+ placeholder="请输入具体收货地址"
|
|
|
|
+ :trigger-on-focus="false"
|
|
|
|
+ @select="handleSelect1"
|
|
|
|
+ >
|
|
|
|
+ </el-autocomplete>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+ <div slot="footer" class="button-box">
|
|
|
|
+ <el-button @click="drawer = false">取消</el-button>
|
|
|
|
+ <el-button type="primary" @click="addAddressClick">确定</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </el-dialog>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -263,6 +435,24 @@ import { getCookie } from "@/utils/util.js";
|
|
export default {
|
|
export default {
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
|
|
+ drawer: false,
|
|
|
|
+ clickIndex: null,
|
|
|
|
+ input: null,
|
|
|
|
+ screen: "",
|
|
|
|
+ options: [
|
|
|
|
+ {
|
|
|
|
+ value: "下单客户",
|
|
|
|
+ lable: "下单客户"
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: "承运商",
|
|
|
|
+ lable: "承运商"
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: "车牌号",
|
|
|
|
+ lable: "车牌号"
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
startTime: null,
|
|
startTime: null,
|
|
endTime: null,
|
|
endTime: null,
|
|
//合计净重
|
|
//合计净重
|
|
@@ -285,7 +475,6 @@ export default {
|
|
5,
|
|
5,
|
|
6,
|
|
6,
|
|
7,
|
|
7,
|
|
- 15,
|
|
|
|
16,
|
|
16,
|
|
17,
|
|
17,
|
|
18,
|
|
18,
|
|
@@ -296,8 +485,34 @@ export default {
|
|
23,
|
|
23,
|
|
24,
|
|
24,
|
|
25,
|
|
25,
|
|
- 26
|
|
|
|
- ]
|
|
|
|
|
|
+ 26,
|
|
|
|
+ 27,
|
|
|
|
+ 29
|
|
|
|
+ ],
|
|
|
|
+ tableTitle: "销售钢材统计报表",
|
|
|
|
+ //所有省
|
|
|
|
+ provinceList: [],
|
|
|
|
+ //选中的省
|
|
|
|
+ province: "",
|
|
|
|
+ //所有市
|
|
|
|
+ cityList: [],
|
|
|
|
+ //选中的市
|
|
|
|
+ city: "",
|
|
|
|
+ //所有的县(区)
|
|
|
|
+ countyList: [],
|
|
|
|
+ //选中的县
|
|
|
|
+ county: "",
|
|
|
|
+ //地址输入框的值
|
|
|
|
+ addresText: "",
|
|
|
|
+ //已选中省市县
|
|
|
|
+ address: null,
|
|
|
|
+ //具体地址
|
|
|
|
+ place: null,
|
|
|
|
+ //暂存具体地址
|
|
|
|
+ place1: null,
|
|
|
|
+ //省市县Id
|
|
|
|
+ addressId: null,
|
|
|
|
+ addressRow: {}
|
|
};
|
|
};
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
@@ -326,21 +541,44 @@ export default {
|
|
this.getSteelReport();
|
|
this.getSteelReport();
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
- filterChange(filters) {
|
|
|
|
- console.log(filters);
|
|
|
|
- var arr = this.tableData;
|
|
|
|
- var capacityNoList = Array.from(filters.capacityNo);
|
|
|
|
- this.tableData = [];
|
|
|
|
- this.tableData = arr.filter((item, index) => {
|
|
|
|
- return capacityNoList.indexOf(item.capacityNo) != -1;
|
|
|
|
|
|
+ //销售钢材报表导出excel
|
|
|
|
+ exportAllReportToExcel() {
|
|
|
|
+ const loading = this.$loading({
|
|
|
|
+ lock: true,
|
|
|
|
+ text: "正在导出Excel",
|
|
|
|
+ spinner: "el-icon-loading",
|
|
|
|
+ background: "rgba(0, 0, 0, 0.7)"
|
|
});
|
|
});
|
|
- this.getSpanArr(this.tableData);
|
|
|
|
- console.log(this.tableData);
|
|
|
|
|
|
+ var title = this.tableTitle;
|
|
|
|
+ let tHeader = [];
|
|
|
|
+ let filterVal = [];
|
|
|
|
+ console.log(this.$refs.tableRef);
|
|
|
|
+ this.$refs.tableRef.$children.forEach(item => {
|
|
|
|
+ if (item.label != undefined && item.prop != undefined) {
|
|
|
|
+ if (tHeader.indexOf(item.label) === -1) {
|
|
|
|
+ tHeader.push(item.label);
|
|
|
|
+ }
|
|
|
|
+ if (filterVal.indexOf(item.prop) === -1) {
|
|
|
|
+ filterVal.push(item.prop);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ this.downloadLoading = true;
|
|
|
|
+ require.ensure([], () => {
|
|
|
|
+ const {
|
|
|
|
+ export_json_to_excel
|
|
|
|
+ } = require("@/assets/excel/Export2Excel.js"); //这里必须使用绝对路径,使用@/+存放export2Excel的路径
|
|
|
|
+ let data = this.tableData.map(v => filterVal.map(j => v[j])); //3.formatJson格式转换
|
|
|
|
+ export_json_to_excel(tHeader, data, title); // (title)导出的表格名称
|
|
|
|
+ });
|
|
|
|
+ loading.close();
|
|
},
|
|
},
|
|
|
|
+ changeScreen() {
|
|
|
|
+ console.log(this.screen);
|
|
|
|
+ },
|
|
|
|
+ filterChange(filters) {},
|
|
filterTag(value, row, column) {
|
|
filterTag(value, row, column) {
|
|
- // console.log(value);
|
|
|
|
- // console.log(row);
|
|
|
|
- // console.log(column);
|
|
|
|
|
|
+ return row.capacityNo == value;
|
|
},
|
|
},
|
|
// 数组对象去重
|
|
// 数组对象去重
|
|
deWeight(arr) {
|
|
deWeight(arr) {
|
|
@@ -355,54 +593,67 @@ export default {
|
|
return arr;
|
|
return arr;
|
|
},
|
|
},
|
|
cellClik(row, column, cell, event) {
|
|
cellClik(row, column, cell, event) {
|
|
- console.log(cell);
|
|
|
|
|
|
+ if (row.group != this.clickIndex) {
|
|
|
|
+ this.tableData.forEach(item => {
|
|
|
|
+ if (item.group == this.clickIndex) {
|
|
|
|
+ this.$set(item, "isCapacityShow", 0);
|
|
|
|
+ this.$set(item, "isCarrierShow", 0);
|
|
|
|
+ this.$set(item, "isTelShow", 0);
|
|
|
|
+ this.$set(item, "isAddressShow", 0);
|
|
|
|
+ this.$set(item, "isNumShow", 0);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
if (column.property == "capacityNo") {
|
|
if (column.property == "capacityNo") {
|
|
this.$set(row, "isCapacityShow", 1);
|
|
this.$set(row, "isCapacityShow", 1);
|
|
|
|
+ this.clickIndex = row.group;
|
|
}
|
|
}
|
|
if (column.property == "carrierName") {
|
|
if (column.property == "carrierName") {
|
|
this.$set(row, "isCarrierShow", 1);
|
|
this.$set(row, "isCarrierShow", 1);
|
|
|
|
+ this.clickIndex = row.group;
|
|
}
|
|
}
|
|
if (column.property == "capacityTel") {
|
|
if (column.property == "capacityTel") {
|
|
this.$set(row, "isTelShow", 1);
|
|
this.$set(row, "isTelShow", 1);
|
|
|
|
+ this.clickIndex = row.group;
|
|
}
|
|
}
|
|
- if (column.property == "capacityTel") {
|
|
|
|
- this.$set(row, "isTelShow", 1);
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- cellLeaveMouse(row, column, cell, event) {
|
|
|
|
- if (column.property == "capacityNo") {
|
|
|
|
- this.$set(row, "isCapacityShow", 0);
|
|
|
|
- }
|
|
|
|
- if (column.property == "carrierName") {
|
|
|
|
- this.$set(row, "isCarrierShow", 0);
|
|
|
|
- }
|
|
|
|
- if (column.property == "capacityTel") {
|
|
|
|
- this.$set(row, "isTelShow", 0);
|
|
|
|
|
|
+ if (column.property == "addressPlace") {
|
|
|
|
+ this.$set(row, "isAddressShow", 1);
|
|
|
|
+ this.clickIndex = row.group;
|
|
}
|
|
}
|
|
- if (column.property == "capacityTel") {
|
|
|
|
- this.$set(row, "isTelShow", 0);
|
|
|
|
|
|
+ if (column.property == "materialNum") {
|
|
|
|
+ this.$set(row, "isNumShow", 1);
|
|
|
|
+ this.clickIndex = row.group;
|
|
}
|
|
}
|
|
},
|
|
},
|
|
//承运商弹出层
|
|
//承运商弹出层
|
|
handleSelectCarrier(row, index, item) {
|
|
handleSelectCarrier(row, index, item) {
|
|
- console.log(this.carrierList);
|
|
|
|
- console.log(row);
|
|
|
|
|
|
+ this.carrierList.forEach(item => {
|
|
|
|
+ if (item.carrierName == row.carrierName) {
|
|
|
|
+ row.carrierId = item.carrierId;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
},
|
|
},
|
|
//承运商边输边查
|
|
//承运商边输边查
|
|
querySearchCarrier(queryString, cb) {
|
|
querySearchCarrier(queryString, cb) {
|
|
- this.axios
|
|
|
|
- .post("/api/v1/uc/getCarrierMesByLike?index=" + queryString)
|
|
|
|
- .then(res => {
|
|
|
|
- if (res.data.code == "200") {
|
|
|
|
- var restaurants = res.data.data;
|
|
|
|
- this.carrierList = res.data.data;
|
|
|
|
- console.log(restaurants);
|
|
|
|
- var results = queryString
|
|
|
|
- ? restaurants.filter(this.createFilterCarrier(queryString))
|
|
|
|
- : restaurants;
|
|
|
|
- cb(results);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
|
|
+ if (queryString.length > 1) {
|
|
|
|
+ this.axios
|
|
|
|
+ .post("/api/v1/uc/getCarrierMesByLike?index=" + queryString)
|
|
|
|
+ .then(res => {
|
|
|
|
+ if (res.data.code == "200") {
|
|
|
|
+ this.carrierList = [];
|
|
|
|
+ if (res.data.data.length == 0) {
|
|
|
|
+ this.$message.info("承运商不存在,请前往注册");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ var restaurants = res.data.data;
|
|
|
|
+ this.carrierList = res.data.data;
|
|
|
|
+ var results = queryString
|
|
|
|
+ ? restaurants.filter(this.createFilterCarrier(queryString))
|
|
|
|
+ : restaurants;
|
|
|
|
+ cb(results);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
},
|
|
},
|
|
createFilterCarrier(queryString) {
|
|
createFilterCarrier(queryString) {
|
|
return restaurants => {
|
|
return restaurants => {
|
|
@@ -418,12 +669,12 @@ export default {
|
|
this.axios
|
|
this.axios
|
|
.post("/api/v1/uc/getCapacityByLike?index=" + queryString)
|
|
.post("/api/v1/uc/getCapacityByLike?index=" + queryString)
|
|
.then(res => {
|
|
.then(res => {
|
|
|
|
+ this.capacityList = [];
|
|
if (res.data.code == "200") {
|
|
if (res.data.code == "200") {
|
|
if (res.data.data.length == 0) {
|
|
if (res.data.data.length == 0) {
|
|
- this.$message.info("车牌号不存在");
|
|
|
|
|
|
+ this.$message.info("车牌号不存在,请前往注册");
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- this.capacityList = [];
|
|
|
|
var restaurants = res.data.data;
|
|
var restaurants = res.data.data;
|
|
this.capacityList = res.data.data;
|
|
this.capacityList = res.data.data;
|
|
var results = queryString
|
|
var results = queryString
|
|
@@ -447,37 +698,51 @@ export default {
|
|
handleSelect(row, index) {
|
|
handleSelect(row, index) {
|
|
this.capacityList.forEach(item => {
|
|
this.capacityList.forEach(item => {
|
|
if (item.capacityNumber === row.capacityNo) {
|
|
if (item.capacityNumber === row.capacityNo) {
|
|
- row.newCapacityId = item.capacityId;
|
|
|
|
|
|
+ row.newsCapacityId = item.capacityId;
|
|
}
|
|
}
|
|
});
|
|
});
|
|
},
|
|
},
|
|
- //更换车牌号接口
|
|
|
|
- updateCapacitySure() {
|
|
|
|
- let map = {
|
|
|
|
- orderId: this.orderId,
|
|
|
|
- saleOrderMaterialId: this.saleOrderMaterialId,
|
|
|
|
- lineSequence: this.lineSequence,
|
|
|
|
- capacityId: this.newCapacityId
|
|
|
|
- };
|
|
|
|
- this.axios
|
|
|
|
- .post("/api/v1/ams/updateCapacityNumberInFactory", map)
|
|
|
|
- .then(res => {
|
|
|
|
- if (res.data.code == 200) {
|
|
|
|
- this.$message.success("变更成功");
|
|
|
|
- this.getSteelReport();
|
|
|
|
- } else {
|
|
|
|
|
|
+ updateCapacity(row) {
|
|
|
|
+ if (row.newsCapacityId == null) {
|
|
|
|
+ this.$message.warning("请先注册车牌号或者选中弹出后再提交!");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (row.capacityIds != 0) {
|
|
|
|
+ const loading = this.$loading({
|
|
|
|
+ lock: true,
|
|
|
|
+ text: "正在变更车牌号",
|
|
|
|
+ spinner: "el-icon-loading",
|
|
|
|
+ background: "rgba(0, 0, 0, 0.7)"
|
|
|
|
+ });
|
|
|
|
+ this.axios
|
|
|
|
+ .post("/api/v1/ams/updateCapacityNumberInFactory", row)
|
|
|
|
+ .then(res => {
|
|
|
|
+ if (res.data.code == 200) {
|
|
|
|
+ this.$message.success("变更车牌号成功!");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
|
|
+ } else {
|
|
|
|
+ this.$message.success("变更失败,请联系管理员");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {
|
|
this.$message.success("变更失败,请联系管理员");
|
|
this.$message.success("变更失败,请联系管理员");
|
|
this.getSteelReport();
|
|
this.getSteelReport();
|
|
- }
|
|
|
|
- })
|
|
|
|
- .catch(() => {
|
|
|
|
- this.$message.success("变更失败,请联系管理员");
|
|
|
|
- this.getSteelReport();
|
|
|
|
- });
|
|
|
|
|
|
+ loading.close();
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ }
|
|
},
|
|
},
|
|
//修改司机电话号码
|
|
//修改司机电话号码
|
|
updateDriverTel(row) {
|
|
updateDriverTel(row) {
|
|
- console.log(row.capacityTel);
|
|
|
|
|
|
+ const loading = this.$loading({
|
|
|
|
+ lock: true,
|
|
|
|
+ text: "修改电话号码中",
|
|
|
|
+ spinner: "el-icon-loading",
|
|
|
|
+ background: "rgba(0, 0, 0, 0.7)"
|
|
|
|
+ });
|
|
if (row.capacityTel == null || row.capacityTel == "") {
|
|
if (row.capacityTel == null || row.capacityTel == "") {
|
|
this.$message.error("电话号码不能为空");
|
|
this.$message.error("电话号码不能为空");
|
|
return;
|
|
return;
|
|
@@ -491,19 +756,21 @@ export default {
|
|
if (res.data.code == "200") {
|
|
if (res.data.code == "200") {
|
|
this.$message.success("修改成功");
|
|
this.$message.success("修改成功");
|
|
this.getSteelReport();
|
|
this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
} else {
|
|
} else {
|
|
this.$message.error("修改失败");
|
|
this.$message.error("修改失败");
|
|
this.getSteelReport();
|
|
this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
}
|
|
}
|
|
})
|
|
})
|
|
.catch(() => {
|
|
.catch(() => {
|
|
this.$message.error("修改失败");
|
|
this.$message.error("修改失败");
|
|
this.getSteelReport();
|
|
this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
});
|
|
});
|
|
},
|
|
},
|
|
//关闭金蝶分录
|
|
//关闭金蝶分录
|
|
deleteEasEntryId(row) {
|
|
deleteEasEntryId(row) {
|
|
- let title = `确定关闭-${this.capacityNumber}-金蝶分录?`;
|
|
|
|
this.$confirm(title, {
|
|
this.$confirm(title, {
|
|
confirmButtonText: "是",
|
|
confirmButtonText: "是",
|
|
cancelButtonText: "否",
|
|
cancelButtonText: "否",
|
|
@@ -535,18 +802,160 @@ export default {
|
|
});
|
|
});
|
|
},
|
|
},
|
|
//修改承运商授权
|
|
//修改承运商授权
|
|
- //修改承运商授权
|
|
|
|
updateTruckCarrier(row) {
|
|
updateTruckCarrier(row) {
|
|
- this.axios.post("/api/v1/ams/updateTruckNoCarrier", map).then(res => {
|
|
|
|
- if (res.data.code == "200") {
|
|
|
|
- this.$message.success("修改授权成功");
|
|
|
|
- this.getRequestUrl();
|
|
|
|
- this.dialogTableVisible = false;
|
|
|
|
- }
|
|
|
|
|
|
+ if (row.carrierId == null) {
|
|
|
|
+ this.$message.warning("请注册承运商或者选中弹出层之后再提交!");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ const loading = this.$loading({
|
|
|
|
+ lock: true,
|
|
|
|
+ text: "正在修改承运商授权",
|
|
|
|
+ spinner: "el-icon-loading",
|
|
|
|
+ background: "rgba(0, 0, 0, 0.7)"
|
|
|
|
+ });
|
|
|
|
+ this.axios
|
|
|
|
+ .post("/api/v1/ams/updateTruckNoCarrier", row)
|
|
|
|
+ .then(res => {
|
|
|
|
+ if (res.data.code == "200") {
|
|
|
|
+ this.$message.success("修改承运商授权成功");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
|
|
+ } else {
|
|
|
|
+ this.$message.error("修改失败,请联系管理员!");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {
|
|
|
|
+ this.$message.error("修改失败,请联系管理员!");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ updateAddress(row) {
|
|
|
|
+ this.drawer = true;
|
|
|
|
+ this.addressRow = row;
|
|
|
|
+ this.province = row.addressProvince;
|
|
|
|
+ this.city = row.addressDistrict;
|
|
|
|
+ this.county = row.addressTown;
|
|
|
|
+ this.addressId = row.shipperAddressId;
|
|
|
|
+ this.getAllProvince();
|
|
|
|
+ },
|
|
|
|
+ //获取所有省数据
|
|
|
|
+ getAllProvince() {
|
|
|
|
+ this.axios.post("/api/v1/uc/getAllProvince").then(res => {
|
|
|
|
+ this.provinceList = res.data.data;
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ //省改变
|
|
|
|
+ onchangeProvince() {
|
|
|
|
+ this.axios
|
|
|
|
+ .post(
|
|
|
|
+ "/api/v1/uc/getDistrictByProvince?addressProvince=" +
|
|
|
|
+ this.province +
|
|
|
|
+ "&i=" +
|
|
|
|
+ new Date()
|
|
|
|
+ )
|
|
|
|
+ .then(res => {
|
|
|
|
+ this.cityList = res.data.data;
|
|
|
|
+ // this.city = "";
|
|
|
|
+ // this.county = "";
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ //市改变
|
|
|
|
+ onchangeCity() {
|
|
|
|
+ this.axios
|
|
|
|
+ .post(
|
|
|
|
+ "/api/v1/uc/getTownByDistrict?addressDistrict=" +
|
|
|
|
+ this.city +
|
|
|
|
+ "&i=" +
|
|
|
|
+ new Date()
|
|
|
|
+ )
|
|
|
|
+ .then(res => {
|
|
|
|
+ this.countyList = res.data.data;
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ //县(区)改变
|
|
|
|
+ onchangeCounty() {
|
|
|
|
+ let mapValue = {
|
|
|
|
+ addressProvince: this.province,
|
|
|
|
+ addressDistrict: this.city,
|
|
|
|
+ addressTown: this.county
|
|
|
|
+ };
|
|
|
|
+ this.axios.post("/api/v1/uc/getPlaceByAllAddress", mapValue).then(res => {
|
|
|
|
+ this.addressId = res.data.data[0].addressId;
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ //收货地址弹出层
|
|
|
|
+ handleSelect1(item) {
|
|
|
|
+ console.log("获取所有下拉值!");
|
|
|
|
+ },
|
|
|
|
+ //以下是收货地址边输边查搜索
|
|
|
|
+ querySearch1(queryString, cb) {
|
|
|
|
+ this.axios
|
|
|
|
+ .post(
|
|
|
|
+ "/api/v1/ams/getRealAddressByLike?addressId=" +
|
|
|
|
+ this.addressId +
|
|
|
|
+ "&index=" +
|
|
|
|
+ queryString
|
|
|
|
+ )
|
|
|
|
+ .then(res => {
|
|
|
|
+ if (res.data.code == "200") {
|
|
|
|
+ var restaurants = res.data.data;
|
|
|
|
+ var results = queryString
|
|
|
|
+ ? restaurants.filter(this.createFilter1(queryString))
|
|
|
|
+ : restaurants;
|
|
|
|
+ // 调用 callback 返回建议列表的数据
|
|
|
|
+ cb(results);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ createFilter1(queryString) {
|
|
|
|
+ return restaurants => {
|
|
|
|
+ return (
|
|
|
|
+ restaurants.value.toLowerCase().indexOf(queryString.toLowerCase()) >
|
|
|
|
+ -1
|
|
|
|
+ );
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ addAddressClick() {
|
|
|
|
+ const loading = this.$loading({
|
|
|
|
+ lock: true,
|
|
|
|
+ text: "正在修改收货地址",
|
|
|
|
+ spinner: "el-icon-loading",
|
|
|
|
+ background: "rgba(0, 0, 0, 0.7)"
|
|
});
|
|
});
|
|
|
|
+ let map = this.addressRow;
|
|
|
|
+ map.isCloseEas = Number(1);
|
|
|
|
+ map.isNewCar = Number(1);
|
|
|
|
+ map.place = this.place;
|
|
|
|
+ map.shipperAddressId = this.addressId;
|
|
|
|
+ this.axios
|
|
|
|
+ .post("/api/v1/ams/updateCarAddress", map)
|
|
|
|
+ .then(res => {
|
|
|
|
+ if (res.data.code == "200") {
|
|
|
|
+ this.$message.success("修改收货地址成功!");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ this.drawer = false;
|
|
|
|
+ loading.close();
|
|
|
|
+ } else {
|
|
|
|
+ this.$message.error("修改失败,请联系管理员!");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ this.drawer = false;
|
|
|
|
+ loading.close();
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {
|
|
|
|
+ this.$message.error("修改失败,请联系管理员!");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ this.drawer = false;
|
|
|
|
+ loading.close();
|
|
|
|
+ });
|
|
},
|
|
},
|
|
//记录每一行的合并数
|
|
//记录每一行的合并数
|
|
getSpanArr(data) {
|
|
getSpanArr(data) {
|
|
|
|
+ console.log("我执行");
|
|
//每次调用方法初始化
|
|
//每次调用方法初始化
|
|
this.spanArr = [];
|
|
this.spanArr = [];
|
|
for (var i = 0; i < data.length; i++) {
|
|
for (var i = 0; i < data.length; i++) {
|
|
@@ -566,6 +975,10 @@ export default {
|
|
data[i].group = data[i - 1].group + 1;
|
|
data[i].group = data[i - 1].group + 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ this.totalCapacity = data[data.length - 1].group + 1;
|
|
|
|
+ this.totalNumber = data.reduce(function(prev, item) {
|
|
|
|
+ return prev + item.materialNum;
|
|
|
|
+ }, 0);
|
|
}
|
|
}
|
|
},
|
|
},
|
|
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
|
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
|
@@ -578,11 +991,99 @@ export default {
|
|
};
|
|
};
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ //减少物资件数
|
|
|
|
+ updateBillOrder(row) {
|
|
|
|
+ const loading = this.$loading({
|
|
|
|
+ lock: true,
|
|
|
|
+ text: "修改物资件数中",
|
|
|
|
+ spinner: "el-icon-loading",
|
|
|
|
+ background: "rgba(0, 0, 0, 0.7)"
|
|
|
|
+ });
|
|
|
|
+ let map = {
|
|
|
|
+ materialId: row.materialId,
|
|
|
|
+ materialNum: row.materialNum
|
|
|
|
+ };
|
|
|
|
+ let arr = [];
|
|
|
|
+ arr.push(map);
|
|
|
|
+ let updateMap = {
|
|
|
|
+ orderId: row.orderId,
|
|
|
|
+ mapList: arr
|
|
|
|
+ };
|
|
|
|
+ this.axios
|
|
|
|
+ .post("/api/v1/oms/updateMaterialMes", updateMap)
|
|
|
|
+ .then(res => {
|
|
|
|
+ if (res.data.code == "200") {
|
|
|
|
+ this.$message.success("修改物资数量成功");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
|
|
+ } else {
|
|
|
|
+ this.$message.error("修改物资数量失败,请联系管理员");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {
|
|
|
|
+ this.$message.error("修改物资数量失败,请联系管理员");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ closeEasEntryId(row) {
|
|
|
|
+ console.log(row);
|
|
|
|
+ this.$prompt("确定关闭该条分录吗?", "警告", {
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
+ center: true,
|
|
|
|
+ inputPlaceholder: "请输入关闭理由"
|
|
|
|
+ })
|
|
|
|
+ .then(({ value }) => {
|
|
|
|
+ if (value != null || value != "") {
|
|
|
|
+ const loading = this.$loading({
|
|
|
|
+ lock: true,
|
|
|
|
+ text: "正在关闭该条分录",
|
|
|
|
+ spinner: "el-icon-loading",
|
|
|
|
+ background: "rgba(0, 0, 0, 0.7)"
|
|
|
|
+ });
|
|
|
|
+ let map = {
|
|
|
|
+ orderId: row.orderId,
|
|
|
|
+ saleOrderMaterialId: row.saleOrderMaterialId,
|
|
|
|
+ saleMaterialId: row.saleMaterialId,
|
|
|
|
+ reason: value,
|
|
|
|
+ number: row.saleOrderNo
|
|
|
|
+ };
|
|
|
|
+ this.axios
|
|
|
|
+ .post("/api/v1/ams/closeSteelMaterialId", map)
|
|
|
|
+ .then(res => {
|
|
|
|
+ if (res.data.code == "200") {
|
|
|
|
+ this.$message.success("关闭成功");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
|
|
+ } else {
|
|
|
|
+ this.$message.error("关闭失败,请联系管理员");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {
|
|
|
|
+ this.$message.error("关闭失败,请联系管理员");
|
|
|
|
+ this.getSteelReport();
|
|
|
|
+ loading.close();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {
|
|
|
|
+ this.$message.info("取消输入");
|
|
|
|
+ });
|
|
|
|
+ },
|
|
//查询,输入查询条件
|
|
//查询,输入查询条件
|
|
onclick() {
|
|
onclick() {
|
|
let startTime = null;
|
|
let startTime = null;
|
|
let endTime = null;
|
|
let endTime = null;
|
|
let carrierSsoId = null;
|
|
let carrierSsoId = null;
|
|
|
|
+ let carrierName = null;
|
|
|
|
+ let consigneeName = null;
|
|
|
|
+ let capacityNo = null;
|
|
|
|
+ let remark = null;
|
|
if (this.startTime && this.endTime) {
|
|
if (this.startTime && this.endTime) {
|
|
startTime = sjTime(this.startTime);
|
|
startTime = sjTime(this.startTime);
|
|
endTime = sjTime(this.endTime);
|
|
endTime = sjTime(this.endTime);
|
|
@@ -590,6 +1091,15 @@ export default {
|
|
if (getCookie("orgCode") == "chengyunshang") {
|
|
if (getCookie("orgCode") == "chengyunshang") {
|
|
carrierSsoId = getCookie("userId");
|
|
carrierSsoId = getCookie("userId");
|
|
}
|
|
}
|
|
|
|
+ if (this.screen == "下单客户") {
|
|
|
|
+ consigneeName = this.input;
|
|
|
|
+ } else if (this.screen == "承运商") {
|
|
|
|
+ carrierName = this.input;
|
|
|
|
+ } else if (this.screen == "车牌号") {
|
|
|
|
+ capacityNo = this.input;
|
|
|
|
+ } else {
|
|
|
|
+ remark = this.input;
|
|
|
|
+ }
|
|
this.axios
|
|
this.axios
|
|
.post(
|
|
.post(
|
|
"/api/v1/tms/getSaleSteelReport?startTime=" +
|
|
"/api/v1/tms/getSaleSteelReport?startTime=" +
|
|
@@ -601,7 +1111,13 @@ export default {
|
|
"&i=" +
|
|
"&i=" +
|
|
new Date() +
|
|
new Date() +
|
|
"&remark=" +
|
|
"&remark=" +
|
|
- this.input
|
|
|
|
|
|
+ remark +
|
|
|
|
+ "&consigneeName=" +
|
|
|
|
+ consigneeName +
|
|
|
|
+ "&carrierName=" +
|
|
|
|
+ carrierName +
|
|
|
|
+ "&capacityNo=" +
|
|
|
|
+ capacityNo
|
|
)
|
|
)
|
|
.then(res => {
|
|
.then(res => {
|
|
this.tableData = res.data.data;
|
|
this.tableData = res.data.data;
|
|
@@ -715,5 +1231,12 @@ export default {
|
|
margin-left: 20px;
|
|
margin-left: 20px;
|
|
margin-top: 20px;
|
|
margin-top: 20px;
|
|
}
|
|
}
|
|
|
|
+ .address {
|
|
|
|
+ .button-box {
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ align-items: center;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
</style>
|
|
</style>
|