Kaynağa Gözat

邮箱签名

cz 1 yıl önce
ebeveyn
işleme
225f59a6be

+ 1 - 1
src/components/PDF/purchasePDFOneNew.vue

@@ -249,7 +249,7 @@
           </tr>
           <tr>
             <td colspan="6" style="text-align: left">
-              <div v-if="item.remark">
+              <div v-if="item.remark" style="width: 720px; overflow: auto">
                 <span v-html="item.remark"></span>
               </div>
               <div v-else style="height: 15px"></div>

+ 3 - 3
src/components/contractCom/contractDetails.vue

@@ -48,7 +48,7 @@
             <PurchasePDFOneNew :rowData="rowDataOne"></PurchasePDFOneNew>
           </div>
         </div>
-        <div v-else style="padding-left: 300px">暂无数据</div>
+        <div v-else style="padding-left: 43.5%">暂无数据</div>
       </div>
     </div>
     <div v-if="activeName === 'third'">
@@ -278,7 +278,7 @@ if (route.query.currentContractId) {
 .content-box {
   display: flex;
   .left {
-    width: 140px;
+    width: 150px;
     // background: #ccc;
     .left-item {
       height: 36px;
@@ -288,7 +288,7 @@ if (route.query.currentContractId) {
     }
   }
   .right {
-    width: calc(100% - 120px);
+    width: calc(100% - 150px);
     padding-left: 10px;
   }
 }

+ 3 - 3
src/components/contractCom/contractDetailsOne.vue

@@ -51,7 +51,7 @@
             <PurchasePDFOneNew :rowData="rowDataOne"></PurchasePDFOneNew>
           </div>
         </div>
-        <div v-else style="padding-left: 300px">暂无数据</div>
+        <div v-else style="padding-left: 43.5%">暂无数据</div>
       </div>
     </div>
     <div v-if="activeName === 'third'">
@@ -279,7 +279,7 @@ if (route.query.currentSampleId) {
 .content-box {
   display: flex;
   .left {
-    width: 140px;
+    width: 150px;
     // background: #ccc;
     .left-item {
       height: 36px;
@@ -289,7 +289,7 @@ if (route.query.currentSampleId) {
     }
   }
   .right {
-    width: calc(100% - 120px);
+    width: calc(100% - 150px);
     padding-left: 10px;
   }
 }

+ 65 - 17
src/views/connect/E-mail/mail/com/mailWrite.vue

@@ -215,22 +215,45 @@
             style="width: 50%"
           />
         </el-form-item> -->
-        <el-form-item label="发件人" prop="replyTo">
-          <el-select
-            v-model="formData.data.replyTo"
-            filterable
-            placeholder="请选择"
-            style="width: 50%"
-            @change="handleChangeReply"
-          >
-            <el-option
-              v-for="item in userMailList"
-              :key="item.mailUser"
-              :label="item.mailUser"
-              :value="item.mailUser"
-            />
-          </el-select>
-        </el-form-item>
+        <el-row>
+          <el-col :span="6">
+            <el-form-item label="发件人" prop="replyTo">
+              <el-select
+                v-model="formData.data.replyTo"
+                filterable
+                placeholder="请选择"
+                style="width: 100%"
+                @change="handleChangeReply"
+              >
+                <el-option
+                  v-for="item in userMailList"
+                  :key="item.mailUser"
+                  :label="item.mailUser"
+                  :value="item.mailUser"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="签  名:">
+              <el-select
+                v-model="formData.data.templateId"
+                filterable
+                placeholder="请选择"
+                style="width: 100%"
+                @change="handleChangeTemplate"
+              >
+                <el-option
+                  v-for="item in templateList"
+                  :key="item.id"
+                  :label="item.templateName"
+                  :value="item.id"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
         <el-form-item>
           <el-button type="primary" @click="handleSend()"> 发 送 </el-button>
         </el-form-item>
@@ -639,7 +662,26 @@ watch(
     }
   }
 );
-
+const templateList = ref([]);
+const getTemplateList = () => {
+  proxy
+    .post("/mailSignature/page", {
+      pageNum: 1,
+      pageSize: 9999,
+    })
+    .then((res) => {
+      templateList.value = res.rows;
+    });
+};
+getTemplateList();
+const handleChangeTemplate = (val) => {
+  if (val) {
+    const current = templateList.value.find((x) => x.id === val);
+    contentEditor.value.changeHtml(
+      `${formData.data.content}<br><div style="width: 50%;padding: 15px;overflow: auto;box-shadow: 0px 0px 12px rgba(0, 0, 0, .12);">${current.content}</div>`
+    );
+  }
+};
 onMounted(() => {});
 
 defineExpose({
@@ -653,6 +695,12 @@ defineExpose({
   width: 18px;
   transform: translateY(4px);
 }
+.signature-content {
+  width: 50%;
+  padding: 15px;
+  overflow: auto;
+  box-shadow: 1px 1px 1px 1px;
+}
 .att-box {
   padding-bottom: 8px;
   display: flex;

+ 42 - 37
src/views/connect/E-mail/signature/index.vue

@@ -17,13 +17,9 @@
         @moreSearch="moreSearch"
         @get-list="getList"
       >
-        <template #total="{ item }">
-          <div style="width: 100%">
-            <a
-              style="color: #409eff; cursor: pointer"
-              @click="pushProcessApproval(item)"
-              >{{ item.currency }}{{ item.total }}</a
-            >
+        <template #content="{ item }">
+          <div v-if="item.content">
+            <div v-html="getHtml(item.content)"></div>
           </div>
         </template>
       </byTable>
@@ -42,10 +38,10 @@
         :rules="rules"
         ref="byform"
       >
-        <template #remark>
+        <template #content>
           <div style="width: 100%">
             <Editor
-              :value="formData.data.remark"
+              :value="formData.data.content"
               @updateValue="updateHandover"
             />
           </div>
@@ -71,11 +67,13 @@
     >
       <div style="width: 100%" class="main">
         <img src="@/assets/images/mail-preview.png" alt="" class="img" />
-        <div class="body">签名</div>
+        <div class="body">
+          <div v-html="getHtml(selectRowData.content)"></div>
+        </div>
       </div>
       <div style="display: flex; align-items: center; margin-top: 20px">
         <div style="margin-right: 5px">选择签名</div>
-        <el-select disabled v-model="selectRowData"> </el-select>
+        <el-select disabled v-model="selectRowData.templateName"> </el-select>
       </div>
       <template #footer>
         <el-button @click="previewDialog = false" size="large">取 消</el-button>
@@ -110,29 +108,28 @@ const config = computed(() => {
     {
       attrs: {
         label: "模板名称",
-        prop: "corporationName",
+        prop: "templateName",
         width: 180,
       },
     },
     {
       attrs: {
         label: "签名内容",
-        prop: "deptName",
-        slot: "deptName",
+        prop: "content",
+        slot: "content",
       },
     },
     {
       attrs: {
         label: "创建时间",
-        prop: "type",
+        prop: "createTime",
         width: 155,
       },
     },
-
     {
       attrs: {
         label: "操作",
-        width: "180",
+        width: "160",
         align: "center",
         fixed: "right",
       },
@@ -180,7 +177,7 @@ const config = computed(() => {
               ).then(() => {
                 // 删除
                 proxy
-                  .post("/warehouse/delete", {
+                  .post("/mailSignature/delete", {
                     id: row.id,
                   })
                   .then((res) => {
@@ -202,7 +199,7 @@ const getList = async (req) => {
   sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
   loading.value = true;
   proxy
-    .post("/accountRequestFunds/page", sourceList.value.pagination)
+    .post("/mailSignature/page", sourceList.value.pagination)
     .then((message) => {
       sourceList.value.data = message.rows;
       sourceList.value.pagination.total = message.total;
@@ -225,22 +222,22 @@ const formConfig = computed(() => {
   return [
     {
       type: "input",
-      prop: "corporationId",
+      prop: "templateName",
       label: "模板名称",
     },
     {
       type: "slot",
-      prop: "remark",
+      prop: "content",
       label: "签名内容",
-      slotName: "remark",
+      slotName: "content",
     },
   ];
 });
-let rules = ref({
-  productClassifyId: [
-    { required: true, message: "请选择物料分类", trigger: "change" },
+const rules = ref({
+  templateName: [
+    { required: true, message: "请输入模板名称", trigger: "blur" },
   ],
-  remark: [{ required: true, message: "请输入签名内容", trigger: "blur" }],
+  content: [{ required: true, message: "请输入签名内容", trigger: "blur" }],
 });
 const submitType = ref("add");
 const addDialog = ref(false);
@@ -249,24 +246,23 @@ const byform = ref(null);
 const openModal = () => {
   submitType.value = "add";
   formData.data = {
-    remark: "",
+    content: "",
   };
   addDialog.value = true;
 };
-
 const updateHandover = (val) => {
-  formData.data.remark = val;
+  formData.data.content = val;
 };
 const submitForm = () => {
   byform.value.handleSubmit(() => {
     submitLoading.value = true;
-    proxy.post("/accountPayment/add", formData.data).then(
+    proxy.post("/mailSignature/" + submitType.value, formData.data).then(
       () => {
         ElMessage({
-          message: "打款成功",
+          message: "操作成功",
           type: "success",
         });
-        dialogVisible.value = false;
+        addDialog.value = false;
         submitLoading.value = false;
         getList();
       },
@@ -277,16 +273,24 @@ const submitForm = () => {
   });
 };
 const getDtl = (row) => {
-  modalType.value = "edit";
-  proxy.post("/warehouse/detail", { id: row.id }).then((res) => {
-    res.type = res.type + "";
-    dialogVisible.value = true;
+  submitType.value = "edit";
+  proxy.post("/mailSignature/detail", { id: row.id }).then((res) => {
+    addDialog.value = true;
     formData.data = res;
   });
 };
-const selectRowData = ref("ceshi");
+
+const getHtml = (str) => {
+  if (str) {
+    let newStr = str.replace(/<p\b/gi, "<div"); // 使用正则表达式替换<p>为<div
+    return newStr.replace(/<\/p>/gi, "</div>"); // 使用正则表达式替换</p>为</div>
+  }
+};
+
+const selectRowData = ref({});
 const previewDialog = ref(false);
 const openModalOne = (row) => {
+  selectRowData.value = row;
   previewDialog.value = true;
 };
 </script>
@@ -314,6 +318,7 @@ const openModalOne = (row) => {
     left: 6%;
     bottom: 16px;
     min-width: 50%;
+    overflow: auto;
   }
 }
 </style>

+ 119 - 6
src/views/finance/fundManage/accountStatement/index.vue

@@ -1,6 +1,70 @@
 <template>
   <div class="tenant">
-    <div class="content">
+    <div style="background: #fff; padding: 15px 15px 0 15px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="">
+          <el-button type="primary" @click="openModal('add')"
+            >添加流水</el-button
+          >
+          <el-button type="primary" @click="openModalOne('add')"
+            >退税登记</el-button
+          >
+          <el-button type="primary" @click="openModalTwo('add')"
+            >内部转账</el-button
+          >
+        </el-form-item>
+      </el-form>
+    </div>
+    <!-- 统计 -->
+    <div
+      style="padding: 20px; background: #fff; margin: 20px 0px"
+      class="statistics"
+    >
+      <div
+        class="statistics-item two"
+        v-if="headerData.income && headerData.income.length > 0"
+      >
+        <div class="left">收入合计</div>
+        <div class="center" style="margin: 0 15px"></div>
+        <div class="right">
+          <div
+            style="padding: 4px"
+            v-for="(item, index) in headerData.income"
+            :key="index"
+          >
+            <span style="margin-right: 24px; font-weight: 400">{{
+              item.currency
+            }}</span>
+            <span style="text-align: right; letter-spacing: 1px; float: right">
+              {{ moneyFormat(item.amount, 2) }}
+            </span>
+          </div>
+        </div>
+      </div>
+      <div
+        class="statistics-item three"
+        v-if="headerData.expenditure && headerData.expenditure.length > 0"
+      >
+        <div class="left">支出合计</div>
+        <div class="center" style="margin: 0 15px"></div>
+        <div class="right">
+          <div
+            style="padding: 4px"
+            v-for="(item, index) in headerData.expenditure"
+            :key="index"
+          >
+            <span style="margin-right: 24px; font-weight: 400">{{
+              item.currency
+            }}</span>
+            <span style="text-align: right; letter-spacing: 1px; float: right">
+              {{ moneyFormat(item.amount, 2) }}
+            </span>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 表格 -->
+    <div>
       <byTable
         :source="sourceList.data"
         :pagination="sourceList.pagination"
@@ -13,7 +77,10 @@
           //   text: '导出Excel',
           //   action: () => deriveExcel(),
           // },
-          {
+        ]"
+        @get-list="getList"
+      >
+        <!-- {
             text: '内部转账',
             action: () => openModalTwo('add'),
           },
@@ -24,10 +91,7 @@
           {
             text: '添加流水',
             action: () => openModal('add'),
-          },
-        ]"
-        @get-list="getList"
-      >
+          }, -->
         <!-- <template #amount="{ item }">
           <div :style="'color: ' + (item.status === '10' ? '#04cb04;' : 'red;')">
             <span style="padding-right: 4px">{{ item.currency }}</span>
@@ -300,6 +364,10 @@ const { proxy } = getCurrentInstance();
 const accountCurrency = ref([]);
 const accountList = ref([]);
 const contractList = ref([]);
+const headerData = ref({
+  expenditure: [],
+  income: [],
+});
 const status = ref([
   {
     label: "收入",
@@ -550,6 +618,11 @@ const getList = async (req) => {
         loading.value = false;
       }, 200);
     });
+  proxy
+    .post("/accountRunningWater/getTotal", sourceList.value.pagination)
+    .then((res) => {
+      headerData.value = res;
+    });
 };
 getDict();
 const modalType = ref("add");
@@ -1067,4 +1140,44 @@ const submitFormTwo = () => {
 ::v-deep(.el-input-number .el-input__inner) {
   text-align: left;
 }
+
+.statistics {
+  display: flex;
+  .statistics-item {
+    padding: 15px;
+    align-items: center;
+    justify-content: space-around;
+    margin-right: 20px;
+    // width: 280px;
+    // height: 120px;
+    display: flex;
+    // background: #eff6ff;
+    border-radius: 8px 8px 8px 8px;
+    opacity: 1;
+    .left {
+      color: #333333;
+      font-size: 14px;
+      font-weight: 700;
+    }
+    .center {
+      width: 1px;
+      height: 100%;
+      background: #fff;
+    }
+    .right {
+      color: #333333;
+      font-size: 16px;
+      font-weight: 700;
+    }
+  }
+  .one {
+    background: #eff6ff;
+  }
+  .two {
+    background: #fff1e1;
+  }
+  .three {
+    background: #e4f9f9;
+  }
+}
 </style>

+ 116 - 8
src/views/finance/fundManage/flow/index.vue

@@ -1,6 +1,66 @@
 <template>
   <div class="tenant">
-    <div class="content">
+    <div style="background: #fff; padding: 15px 15px 0 15px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="">
+          <el-button type="primary" @click="openModal('add')"
+            >添加流水</el-button
+          >
+          <el-button type="primary" @click="deriveExcel()">导出Excel</el-button>
+          <el-button type="primary" @click="openModalTwo('add')"
+            >内部转账</el-button
+          >
+        </el-form-item>
+      </el-form>
+    </div>
+    <div
+      style="padding: 20px; background: #fff; margin: 20px 0px"
+      class="statistics"
+    >
+      <div
+        class="statistics-item two"
+        v-if="headerData.income && headerData.income.length > 0"
+      >
+        <div class="left">收入合计</div>
+        <div class="center" style="margin: 0 15px"></div>
+        <div class="right">
+          <div
+            style="padding: 4px"
+            v-for="(item, index) in headerData.income"
+            :key="index"
+          >
+            <span style="margin-right: 24px; font-weight: 400">{{
+              item.currency
+            }}</span>
+            <span style="text-align: right; letter-spacing: 1px; float: right">
+              {{ moneyFormat(item.amount, 2) }}
+            </span>
+          </div>
+        </div>
+      </div>
+      <div
+        class="statistics-item three"
+        v-if="headerData.expenditure && headerData.expenditure.length > 0"
+      >
+        <div class="left">支出合计</div>
+        <div class="center" style="margin: 0 15px"></div>
+        <div class="right">
+          <div
+            style="padding: 4px"
+            v-for="(item, index) in headerData.expenditure"
+            :key="index"
+          >
+            <span style="margin-right: 24px; font-weight: 400">{{
+              item.currency
+            }}</span>
+            <span style="text-align: right; letter-spacing: 1px; float: right">
+              {{ moneyFormat(item.amount, 2) }}
+            </span>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div>
       <byTable
         :source="sourceList.data"
         :pagination="sourceList.pagination"
@@ -8,8 +68,11 @@
         :loading="loading"
         :selectConfig="selectConfig"
         highlight-current-row
-        :action-list="[
-          {
+        :action-list="[]"
+        @moreSearch="moreSearch"
+        @get-list="getList"
+      >
+        <!-- {
             text: '内部转账',
             action: () => openModalTwo('add'),
           },
@@ -20,11 +83,7 @@
           {
             text: '添加流水',
             action: () => openModal('add'),
-          },
-        ]"
-        @moreSearch="moreSearch"
-        @get-list="getList"
-      >
+          }, -->
         <template #amount="{ item }">
           <div
             :style="'color: ' + (item.status === '10' ? '#04cb04;' : 'red;')"
@@ -283,6 +342,10 @@ import ContractPDF from "@/components/PDF/contractPDF.vue";
 const { proxy } = getCurrentInstance();
 const accountCurrency = ref([]);
 const accountList = ref([]);
+const headerData = ref({
+  expenditure:[],
+  income:[]
+});
 const status = ref([
   {
     label: "收入",
@@ -503,6 +566,12 @@ const getList = async (req) => {
         loading.value = false;
       }, 200);
     });
+
+  proxy
+    .post("/accountRunningWater/getTotal", sourceList.value.pagination)
+    .then((res) => {
+      headerData.value = res;
+    });
 };
 getDict();
 getList();
@@ -932,4 +1001,43 @@ const submitFormTwo = () => {
 ::v-deep(.el-input-number .el-input__inner) {
   text-align: left;
 }
+.statistics {
+  display: flex;
+  .statistics-item {
+    padding: 15px;
+    align-items: center;
+    justify-content: space-around;
+    margin-right: 20px;
+    // width: 280px;
+    // height: 120px;
+    display: flex;
+    // background: #eff6ff;
+    border-radius: 8px 8px 8px 8px;
+    opacity: 1;
+    .left {
+      color: #333333;
+      font-size: 14px;
+      font-weight: 700;
+    }
+    .center {
+      width: 1px;
+      height: 100%;
+      background: #fff;
+    }
+    .right {
+      color: #333333;
+      font-size: 16px;
+      font-weight: 700;
+    }
+  }
+  .one {
+    background: #eff6ff;
+  }
+  .two {
+    background: #fff1e1;
+  }
+  .three {
+    background: #e4f9f9;
+  }
+}
 </style>