Browse Source

Project Init

yigeren911 1 year ago
parent
commit
3d0dddf502

+ 35 - 10
src/styles/app.scss

@@ -1,24 +1,27 @@
 /* 基本样式 */
 @font-face {
-  font-family: Alibaba-55;
-  src: url('../assets/font/AlibabaPuHuiTi-2-55-Regular.ttf') format("truetype");
+    font-family: Alibaba-55;
+    src: url('../assets/font/AlibabaPuHuiTi-2-55-Regular.ttf') format("truetype");
 }
 
 @font-face {
-  font-family: Alimama-ShuHeiTi;
-  src: url('../assets/font/AlimamaShuHeiTi-Bold.ttf') format("truetype");
+    font-family: Alimama-ShuHeiTi;
+    src: url('../assets/font/AlimamaShuHeiTi-Bold.ttf') format("truetype");
 }
 
 @font-face {
-  font-family: Alimama-DaKai;
-  src: url('../assets/font/AlimamaDongFangDaKai-Regular.ttf') format("truetype");
+    font-family: Alimama-DaKai;
+    src: url('../assets/font/AlimamaDongFangDaKai-Regular.ttf') format("truetype");
 }
 
-* {
-  font-family: Alibaba-55;
+@font-face {
+    font-family: '思源黑体';
+    src: url('../assets/font/SourceHanSansSC-Normal-2.otf');
 }
 
 * {
+    font-family: 思源黑体;
+
     margin: 0;
     padding: 0;
     box-sizing: border-box;
@@ -53,9 +56,11 @@ body,
 .w100 {
     width: 100% !important;
 }
+
 .h100 {
     height: 100% !important;
 }
+
 .ba-center {
     display: flex;
     align-items: center;
@@ -65,6 +70,7 @@ body,
 .default-main {
     margin: 0 var(--main-space) 60px var(--main-space);
 }
+
 .zoom-handle {
     position: absolute;
     width: 20px;
@@ -73,6 +79,7 @@ body,
     right: -10px;
     cursor: se-resize;
 }
+
 .block-help {
     display: block;
     color: #909399;
@@ -81,7 +88,7 @@ body,
     padding-top: 5px;
 }
 
-.footerClassic{
+.footerClassic {
     margin-bottom: 16px !important;
     border-radius: 4px;
     margin-left: 15px !important;
@@ -92,6 +99,7 @@ body,
 .ba-table-box {
     border-radius: var(--el-border-radius-round);
 }
+
 .ba-table-alert {
     background-color: #e8edf0 !important;
     border: 1px solid #f6f6f6;
@@ -99,6 +107,7 @@ body,
     border-bottom-left-radius: 0;
     border-bottom-right-radius: 0;
 }
+
 /* 表格-e */
 
 /* 新增/编辑表单-s */
@@ -107,14 +116,17 @@ body,
     overflow: hidden;
     border-radius: var(--el-border-radius-base);
 }
+
 .ba-operate-dialog .el-dialog__header {
     padding-bottom: 16px;
     border-bottom: 1px solid var(--color-bg-1);
 }
+
 .ba-operate-dialog .el-dialog__body {
     padding-top: 0;
     padding-bottom: 52px;
 }
+
 .ba-operate-dialog .el-dialog__footer {
     padding: 10px var(--el-dialog-padding-primary);
     box-shadow: var(--el-box-shadow);
@@ -122,14 +134,17 @@ body,
     width: 100%;
     bottom: 0px;
 }
+
 .ba-operate-form {
     padding-top: 30px;
 
 }
+
 .ba-table-form-scrollbar {
     height: 60vh;
     max-height: 60vh;
 }
+
 /* 新增/编辑表单-e */
 
 /* 全局遮罩-s */
@@ -142,6 +157,7 @@ body,
     background-color: rgba(0, 0, 0, 0.5);
     z-index: 9999990;
 }
+
 /* 全局遮罩-e */
 
 /* 图片上传预览-s */
@@ -149,10 +165,12 @@ body,
     display: flex;
     align-items: center;
     justify-content: center;
+
     img {
         max-width: 100%;
     }
 }
+
 /* 图片上传预览-e */
 
 /* 页面切换动画-s */
@@ -163,22 +181,27 @@ body,
     will-change: transform;
     transition: all 0.3s ease;
 }
+
 // slide-right
 .slide-right-enter-from {
     opacity: 0;
     transform: translateX(-20px);
 }
+
 .slide-right-leave-to {
     opacity: 0;
     transform: translateX(20px);
 }
+
 // slide-left
 .slide-left-enter-from {
     @extend .slide-right-leave-to;
 }
+
 .slide-left-leave-to {
     @extend .slide-right-enter-from;
 }
+
 /* 页面切换动画-e */
 
 /* 自适应-s */
@@ -187,10 +210,12 @@ body,
         display: none;
     }
 }
+
 @media screen and (max-width: 1000px) {
     .ba-operate-dialog .el-dialog__body {
         padding-left: 0;
         padding-right: 0;
     }
 }
-/* 自适应-e */
+
+/* 自适应-e */

+ 7 - 8
src/views/backend/enterprise/coupons/couponstheme/index.vue

@@ -1,13 +1,11 @@
 <template>
   <div class="default-main ba-table-box">
-    <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-              show-icon />
+    <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info" show-icon />
     <el-row>
       <el-col :span="24">
         <!-- 表格顶部菜单 -->
-        <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                     quick-search-placeholder="通过标题模糊搜索"
-                     @action="baTable.onTableHeaderAction" />
+        <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']" quick-search-placeholder="通过标题模糊搜索"
+          @action="baTable.onTableHeaderAction" />
         <!-- 表格 -->
         <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
         <Table @action="baTable.onTableAction" />
@@ -18,6 +16,7 @@
     <!-- 表单 -->
     <PopupForm ref="formRef" />
     <sendDialog ref="sendDialogRef"></sendDialog>
+    
 
   </div>
 </template>
@@ -50,7 +49,7 @@ let cancelBtn: OptButton[] = [
   }
 ];
 
-let btn = defaultOptButtons(['edit','delete']);
+let btn = defaultOptButtons(['edit', 'delete']);
 btn = btn.concat(cancelBtn);
 
 const tableRef = ref();
@@ -145,10 +144,10 @@ const newButtonClick = (row: TableRow) => {
   if (!row) {
     return;
   } else if (row.couponStatus == 1) {
-    ElMessage({ type: "error", message: "该消费卷已停用!" ,grouping:true});
+    ElMessage({ type: "error", message: "该消费卷已停用!", grouping: true });
     return;
   }
-// 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
+  // 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
   let rowClone = _.cloneDeep(row);
 
   sendDialogRef.value.open(rowClone);

+ 211 - 53
src/views/backend/enterprise/members/entrust/auditDialog.vue

@@ -1,50 +1,125 @@
 <template>
-  <el-dialog title="委托详情" v-model="showDialog" width="800px" @close="closeDialog">
-    <el-descriptions
-      class="margin-top"
-      :title="'车位编号:'+data.parkingNumber"
-      :column="3"
-      border
-    >
-      <el-descriptions-item width="250" label="区县">
-        {{ data.districtName }}
-      </el-descriptions-item>
-      <el-descriptions-item width="250" label="小区">
-        {{ data.communityName }}
-      </el-descriptions-item>
-      <el-descriptions-item width="250" label="楼号">
-        {{ data.buildingNumber }}
-      </el-descriptions-item>
-      <el-descriptions-item width="250" label="车位类型">
-        {{ data.parkingType == 1 ? "车库" : "车位" }}
-      </el-descriptions-item>
-      <el-descriptions-item label="面积">
-        {{ data.area }}
-      </el-descriptions-item>
-      <el-descriptions-item label="售卖方式">
-        <el-tag style="margin: 0px 3px" v-if="data.entrustType==0">租售</el-tag>
-        <el-tag style="margin: 0px 3px" v-if="data.entrustType==1">出租</el-tag>
-        <el-tag style="margin: 0px 3px" v-if="data.entrustType==2">出售</el-tag>
-      </el-descriptions-item>
-      <el-descriptions-item label="售价">
-        {{ data.salePrice }}
-      </el-descriptions-item>
-      <el-descriptions-item label="租金">
-        {{ data.hirePrice }}
-      </el-descriptions-item>
-      <el-descriptions-item label="委托人联系电话">
-        {{ data.contactNumber }}
-      </el-descriptions-item>
-      <el-descriptions-item label="证明文件">
-        <el-image v-if="data.evidenceFile.length>0"
-                  style="width: 100px; height: 100px"
-                  :src="data.evidenceFile[0]"
-                  :zoom-rate="1.2"
-                  :preview-src-list="data.evidenceFile"
-                  fit="cover"
-        />
-      </el-descriptions-item>
-    </el-descriptions>
+  <el-dialog title="委托详情" v-model="showDialog" width="1200px" @close="closeDialog">
+    <el-row :gutter="20">
+      <el-col :span="8">
+        <div style="border: #d9d9d9 1px solid">
+          <div style="padding:10px;background-color: #d9d9d9">用户提交</div>
+          <el-descriptions
+            class="margin-top"
+
+            :column="1"
+            border
+          >
+            <el-descriptions-item width="250" label="区县">
+              {{ data.districtName }}
+            </el-descriptions-item>
+            <el-descriptions-item width="250" label="小区">
+              {{ data.communityName }}
+            </el-descriptions-item>
+            <el-descriptions-item width="250" label="楼号">
+              {{ data.buildingNumber }}
+            </el-descriptions-item>
+            <el-descriptions-item width="250" label="车位编号">
+              <el-tag>{{ data.parkingNumber }}</el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item width="250" label="车位类型">
+              {{ data.parkingType == 1 ? "车库" : "车位" }}
+            </el-descriptions-item>
+            <el-descriptions-item label="面积">
+              {{ data.area }}
+            </el-descriptions-item>
+            <el-descriptions-item label="售卖方式">
+              <el-tag style="margin: 0px 3px" v-if="data.entrustType==0">租售</el-tag>
+              <el-tag style="margin: 0px 3px" v-if="data.entrustType==1">出租</el-tag>
+              <el-tag style="margin: 0px 3px" v-if="data.entrustType==2">出售</el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item label="售价">
+              {{ data.salePrice }}
+            </el-descriptions-item>
+            <el-descriptions-item label="租金">
+              {{ data.hirePrice }}
+            </el-descriptions-item>
+            <el-descriptions-item label="委托人联系电话">
+              {{ data.contactNumber }}
+            </el-descriptions-item>
+            <el-descriptions-item label="证明文件">
+              <el-image v-if="data.evidenceFile.length>0"
+                        style="width: 100px; height: 100px"
+                        :src="data.evidenceFile[0]"
+                        :zoom-rate="1.2"
+                        :preview-src-list="data.evidenceFile"
+                        fit="cover"
+              />
+            </el-descriptions-item>
+          </el-descriptions>
+        </div>
+      </el-col>
+
+
+      <el-col :span="16">
+        <div style="border: #d9d9d9 1px solid">
+          <div style="padding:10px;background-color: #d9d9d9">审核登记</div>
+
+          <el-form ref="formRef" :model="formData" label-position="right" label-width="100px"
+                   :rules="formRules">
+            <el-tabs style="margin: 0 20px" v-model="activeTab">
+              <el-tab-pane name="first" label="车位信息">
+                <el-row>
+                  <el-col :span="12">
+                    <el-form-item label="区县" prop="districtId">
+                      <el-select v-model="formData.districtId" @visible-change="getDistrict">
+                        <el-option v-for="item in districtList" :label="item.districtName" :value="item.id"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="12">
+                    <el-form-item label="小区" prop="communityName">
+                      <el-select v-model="formData.communityName" @visible-change="getCommunity" allow-create filterable
+                                 clearable>
+                        <el-option v-for="item in communityList" :label="item.communityName"
+                                   :value="item.communityName"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="12">
+                    <el-form-item label="楼号" prop="buildingNumber">
+                      <el-select v-model="formData.buildingNumber" @visible-change="getBuilding" allow-create filterable
+                                 clearable>
+                        <el-option v-for="item in buildingList" :label="item.buildingNumber"
+                                   :value="item.buildingNumber"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="12">
+                    <el-form-item label="车位编号" prop="parkingNumber">
+                      <el-input v-model="formData.parkingNumber"></el-input>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="24">
+                    <el-form-item prop="pictureUrl" label="主展示图">
+                      <pictureUpload v-model="formData.pictureUrl"></pictureUpload>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="24">
+                    <el-form-item prop="parkingUrl" label="车位照片">
+                      <pictureUpload2 :limit="10" v-model="formData.parkingUrl"></pictureUpload2>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+
+              </el-tab-pane>
+              <el-tab-pane name="second" label="车位简介">
+                <el-form-item label="" prop="parkingShow" label-width="0">
+                  <editor v-model="formData.parkingShow"></editor>
+                </el-form-item>
+              </el-tab-pane>
+            </el-tabs>
+
+          </el-form>
+        </div>
+      </el-col>
+    </el-row>
+
 
     <template #footer>
       <el-button type="success" @click="submit(true)">审核通过</el-button>
@@ -56,9 +131,13 @@
 
 <script setup>
 
-import { ref } from "vue";
+import { reactive, ref } from "vue";
 import request from "/@/api/request";
-import { entrust } from "/@/api/controllerUrls";
+import { building_list, community_list, district_list, entrust } from "/@/api/controllerUrls";
+import { ElMessage } from "element-plus";
+import pictureUpload from "/@/components/pictureUpload/index.vue";
+import pictureUpload2 from "/@/components/pictureUpload/multiple.vue";
+import editor from "/@/components/editor/index.vue";
 
 
 let showDialog = ref(false);
@@ -74,20 +153,99 @@ let data = ref({});
 function open(event) {
   data.value = event;
   data.value.evidenceFile = data.value.evidenceFile ? JSON.parse(data.value.evidenceFile) : [];
+
+  formRef.value?.resetFields();
+  formData.id = data.value.id;
+  formData.parkingNumber = event.parkingNumber;
   showDialog.value = true;
 }
 
-function submit(e) {
-  request.edit(entrust, {
-    id: data.value.id,
-    operate: e ? 1 : 0
-  }, "release").then((res) => {
+function submit(event) {
+  formData.operate = event ? 1 : 0;
+  request.edit(entrust, formData, "release").then((res) => {
     if (res.code == 1) {
       showDialog.value = false;
     }
   });
 }
 
+let activeTab = ref("first");
+
+let formRef = ref();
+
+let formData = reactive({
+  id: "",//委托单id
+  operate: 1,
+  districtId: "",
+  communityName: "",
+  buildingNumber: "",
+  parkingNumber: "",
+  parkingUrl: "",//车位展示图片
+  pictureUrl: "",//车位展示图片
+  parkingShow: "<p><br></p>"//车位简介
+});
+
+let formRules = {
+  districtId: [
+    { required: true, message: "不能为空" }
+  ],
+  communityName: [
+    { required: true, message: "不能为空" }
+  ],
+  buildingNumber: [
+    { required: true, message: "不能为空" }
+  ],
+  parkingNumber: [
+    { required: true, message: "不能为空" }
+  ]
+};
+
+
+//区县列表
+let districtList = ref([]);
+
+function getDistrict(event) {
+  if (!event) return;
+  request.index(district_list, {}, "").then((res) => {
+    if (res.code == 1) {
+      districtList.value = res.data;
+    }
+  });
+}
+
+//小区列表
+let communityList = ref([]);
+
+//选择区县,获取小区列表
+function getCommunity(event) {
+  if (!event) return;
+  request.index(community_list, {
+    districtIds: formData.districtId
+  }, "").then((res) => {
+    if (res.code == 1) {
+      communityList.value = res.data;
+    }
+  });
+}
+
+//楼号列表
+let buildingList = ref([]);
+
+//选择小区,获取楼号列表
+function getBuilding(event) {
+  if (!event) return;
+  if (/^[0-9]/.test(formData.communityId)) {
+    request.index(building_list, {
+      communityIds: formData.communityId
+    }, "").then((res) => {
+      if (res.code == 1) {
+        buildingList.value = res.data;
+      }
+    });
+  }
+}
+
+
 const emit = defineEmits(["close"]);
 
 function closeDialog() {

+ 101 - 0
src/views/backend/enterprise/members/entrust/auditDialog2.vue

@@ -0,0 +1,101 @@
+<template>
+  <el-dialog title="委托详情" v-model="showDialog" width="800px" @close="closeDialog">
+    <el-descriptions
+      class="margin-top"
+      :title="'车位编号:'+data.parkingNumber"
+      :column="3"
+      border
+    >
+      <el-descriptions-item width="250" label="区县">
+        {{ data.districtName }}
+      </el-descriptions-item>
+      <el-descriptions-item width="250" label="小区">
+        {{ data.communityName }}
+      </el-descriptions-item>
+      <el-descriptions-item width="250" label="楼号">
+        {{ data.buildingNumber }}
+      </el-descriptions-item>
+      <el-descriptions-item width="250" label="车位类型">
+        {{ data.parkingType == 1 ? "车库" : "车位" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="面积">
+        {{ data.area }}
+      </el-descriptions-item>
+      <el-descriptions-item label="售卖方式">
+        <el-tag style="margin: 0px 3px" v-if="data.entrustType==0">租售</el-tag>
+        <el-tag style="margin: 0px 3px" v-if="data.entrustType==1">出租</el-tag>
+        <el-tag style="margin: 0px 3px" v-if="data.entrustType==2">出售</el-tag>
+      </el-descriptions-item>
+      <el-descriptions-item label="售价">
+        {{ data.salePrice }}
+      </el-descriptions-item>
+      <el-descriptions-item label="租金">
+        {{ data.hirePrice }}
+      </el-descriptions-item>
+      <el-descriptions-item label="委托人联系电话">
+        {{ data.contactNumber }}
+      </el-descriptions-item>
+      <el-descriptions-item label="证明文件">
+        <el-image v-if="data.evidenceFile.length>0"
+                  style="width: 100px; height: 100px"
+                  :src="data.evidenceFile[0]"
+                  :zoom-rate="1.2"
+                  :preview-src-list="data.evidenceFile"
+                  fit="cover"
+        />
+      </el-descriptions-item>
+    </el-descriptions>
+
+    <template #footer>
+      <el-button type="success" @click="submit(true)">审核通过</el-button>
+      <el-button type="danger" @click="submit(false)">拒绝</el-button>
+    </template>
+
+  </el-dialog>
+</template>
+
+<script setup>
+
+import { ref } from "vue";
+import request from "/@/api/request";
+import { entrust } from "/@/api/controllerUrls";
+
+
+let showDialog = ref(false);
+
+
+defineExpose({
+  open
+});
+
+
+let data = ref({});
+
+function open(event) {
+  data.value = event;
+  data.value.evidenceFile = data.value.evidenceFile ? JSON.parse(data.value.evidenceFile) : [];
+  showDialog.value = true;
+}
+
+function submit(e) {
+  request.edit(entrust, {
+    id: data.value.id,
+    operate: e ? 1 : 0
+  }, "release").then((res) => {
+    if (res.code == 1) {
+      showDialog.value = false;
+    }
+  });
+}
+
+const emit = defineEmits(["close"]);
+
+function closeDialog() {
+  emit("close");
+}
+
+</script>
+
+<style scoped>
+
+</style>