|
|
@@ -0,0 +1,265 @@
|
|
|
+<template>
|
|
|
+ <div class="full-container-p24">
|
|
|
+ <div class="mb30 df aic jcsb">
|
|
|
+ <div class="df aic">
|
|
|
+ <el-input
|
|
|
+ v-model="searchKey"
|
|
|
+ placeholder="请输入服务商/油型号"
|
|
|
+ class="w300"
|
|
|
+ @keyup.enter="handleSearch"
|
|
|
+ clearable
|
|
|
+ @clear="handleSearch"
|
|
|
+ />
|
|
|
+ <el-button class="ml10" type="primary" @click="handleSearch">
|
|
|
+ 搜索
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <el-button class="ml10" type="primary" @click="handleAdd">
|
|
|
+ 新增油价
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <el-table border :data="tableData" stripe>
|
|
|
+ <el-table-column type="index" label="序号" width="80" align="center" />
|
|
|
+ <el-table-column
|
|
|
+ prop="vendorName"
|
|
|
+ label="服务商"
|
|
|
+ min-width="150"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="fuelShipLongitude"
|
|
|
+ label="经度"
|
|
|
+ min-width="120"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="fuelShipLatitude"
|
|
|
+ label="纬度"
|
|
|
+ min-width="120"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="fuelModel"
|
|
|
+ label="油型号"
|
|
|
+ min-width="150"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="price"
|
|
|
+ label="价格(元/吨)"
|
|
|
+ min-width="150"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="priceDate"
|
|
|
+ label="发布日期"
|
|
|
+ min-width="150"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template v-slot="scope">
|
|
|
+ {{ subTimeStr(scope.row.priceDate) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="操作" width="180" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button type="primary" text @click="handleEdit(scope.row)">
|
|
|
+ 修改
|
|
|
+ </el-button>
|
|
|
+ <el-button type="danger" text @click="deleteFuel(scope.row)">
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <div class="df aic jcfe mt40 mr20">
|
|
|
+ <el-pagination
|
|
|
+ background
|
|
|
+ layout="prev, pager, next"
|
|
|
+ :current-page="currentPage"
|
|
|
+ :total="total"
|
|
|
+ @current-change="pageChange"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <el-dialog v-model="dialogVisible" :title="dialogTitle" width="450">
|
|
|
+ <el-form
|
|
|
+ ref="formRef"
|
|
|
+ :model="formData"
|
|
|
+ :rules="rules"
|
|
|
+ label-width="120px"
|
|
|
+ >
|
|
|
+ <el-form-item label="服务商" prop="vendorName">
|
|
|
+ <el-input v-model="formData.vendorName" class="w200" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="经度" prop="fuelShipLongitude">
|
|
|
+ <el-input v-model="formData.fuelShipLongitude" class="w200" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="纬度" prop="fuelShipLatitude">
|
|
|
+ <el-input v-model="formData.fuelShipLatitude" class="w200" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="油型号" prop="fuelModel">
|
|
|
+ <el-input v-model="formData.fuelModel" class="w200" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="价格" prop="price">
|
|
|
+ <el-input v-model="formData.price" class="w200">
|
|
|
+ <template #append>元/吨</template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="发布日期" prop="priceDate">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formData.priceDate"
|
|
|
+ type="date"
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
+ placeholder="选择日期"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+
|
|
|
+ <template #footer>
|
|
|
+ <el-button @click="dialogVisible = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="modifyFuel">确定</el-button>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import { ref, reactive } from "vue";
|
|
|
+import { ElMessage, ElMessageBox } from "element-plus";
|
|
|
+import api from "../../apis/fetch";
|
|
|
+import { subTimeStr } from "../../utils/utils";
|
|
|
+
|
|
|
+const searchKey = ref("");
|
|
|
+const currentPage = ref(1);
|
|
|
+const total = ref(0);
|
|
|
+const tableData = ref([]);
|
|
|
+
|
|
|
+const dialogVisible = ref(false);
|
|
|
+const dialogTitle = ref("新增油价");
|
|
|
+const formRef = ref(null);
|
|
|
+const formData = reactive({
|
|
|
+ fuelId: 0,
|
|
|
+ vendorName: "",
|
|
|
+ fuelShipLongitude: "",
|
|
|
+ fuelShipLatitude: "",
|
|
|
+ fuelModel: "",
|
|
|
+ price: "",
|
|
|
+ priceDate: "",
|
|
|
+});
|
|
|
+
|
|
|
+const rules = reactive({
|
|
|
+ vendorName: [
|
|
|
+ { required: true, message: "请输入服务商名称", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ fuelShipLongitude: [
|
|
|
+ { required: true, message: "请输入经度", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ fuelShipLatitude: [
|
|
|
+ { required: true, message: "请输入纬度", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ fuelModel: [{ required: true, message: "请输入油型号", trigger: "blur" }],
|
|
|
+ price: [{ required: true, message: "请输入价格", trigger: "blur" }],
|
|
|
+ priceDate: [{ required: true, message: "请选择发布日期", trigger: "change" }],
|
|
|
+});
|
|
|
+
|
|
|
+// 获取油价列表
|
|
|
+async function getFuelList() {
|
|
|
+ try {
|
|
|
+ const { data } = await api.getFuelList({
|
|
|
+ term: searchKey.value,
|
|
|
+ currentPage: currentPage.value,
|
|
|
+ size: 10,
|
|
|
+ });
|
|
|
+ if (data.status === 0) {
|
|
|
+ tableData.value = data.result;
|
|
|
+ total.value = data.total;
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ ElMessage.error("获取数据失败");
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 分页切换
|
|
|
+function pageChange(page) {
|
|
|
+ currentPage.value = page;
|
|
|
+ getFuelList();
|
|
|
+}
|
|
|
+
|
|
|
+// 搜索
|
|
|
+function handleSearch() {
|
|
|
+ currentPage.value = 1;
|
|
|
+ getFuelList();
|
|
|
+}
|
|
|
+
|
|
|
+// 新增
|
|
|
+function handleAdd() {
|
|
|
+ dialogTitle.value = "新增油价";
|
|
|
+ Object.keys(formData).forEach((key) => {
|
|
|
+ if (key !== "fuelId") formData[key] = "";
|
|
|
+ });
|
|
|
+ formData.fuelId = 0;
|
|
|
+ dialogVisible.value = true;
|
|
|
+}
|
|
|
+
|
|
|
+// 编辑
|
|
|
+function handleEdit(row) {
|
|
|
+ dialogTitle.value = "修改油价";
|
|
|
+ Object.keys(formData).forEach((key) => {
|
|
|
+ formData[key] = row[key];
|
|
|
+ });
|
|
|
+ formData.fuelId = row.id;
|
|
|
+ dialogVisible.value = true;
|
|
|
+}
|
|
|
+
|
|
|
+// 提交表单
|
|
|
+async function modifyFuel() {
|
|
|
+ try {
|
|
|
+ await formRef.value.validate();
|
|
|
+ const { data } = await api.modifyFuel(formData);
|
|
|
+ if (data.status === 0) {
|
|
|
+ ElMessage.success("操作成功");
|
|
|
+ dialogVisible.value = false;
|
|
|
+ getFuelList();
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 删除
|
|
|
+function deleteFuel(row) {
|
|
|
+ ElMessageBox.confirm("确认删除该油价信息?", "警告", {
|
|
|
+ confirmButtonText: "确认",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ }).then(async () => {
|
|
|
+ try {
|
|
|
+ const { data } = await api.deleteFuel({
|
|
|
+ fuelId: row.id,
|
|
|
+ choiceCompanyId: 0,
|
|
|
+ });
|
|
|
+ if (data.status === 0) {
|
|
|
+ ElMessage.success("删除成功");
|
|
|
+ getFuelList();
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ ElMessage.error("删除失败");
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// 初始化获取数据
|
|
|
+getFuelList();
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.w300 {
|
|
|
+ width: 300px;
|
|
|
+}
|
|
|
+.ml10 {
|
|
|
+ margin-left: 10px;
|
|
|
+}
|
|
|
+</style>
|