Browse Source

维多利亚需求更改,请款禁用表单bug解决,增加请款附件下载预览

cz 1 year ago
parent
commit
1cc1acdb9d

BIN
src/assets/images/mail/replied.png


+ 0 - 1
src/components/WDLY/process/SendPurchaseWDLY.vue

@@ -207,7 +207,6 @@
                   v-model="row.price"
                   v-model="row.price"
                   :precision="4"
                   :precision="4"
                   :controls="false"
                   :controls="false"
-                  :min="0"
                   @change="handleChangeAmount"
                   @change="handleChangeAmount"
                 />
                 />
               </el-form-item>
               </el-form-item>

+ 35 - 3
src/components/process/SendFunds.vue

@@ -113,15 +113,19 @@
       </el-form-item>
       </el-form-item>
       <div style="margin-bottom: 15px">
       <div style="margin-bottom: 15px">
         <el-tag
         <el-tag
-          style="margin-right: 10px; margin-top: 5px"
+          style="margin-right: 10px; margin-top: 8px"
           class="ml-2"
           class="ml-2"
           type="info"
           type="info"
           v-for="(item, index) in formData.data.fileList"
           v-for="(item, index) in formData.data.fileList"
           :key="index"
           :key="index"
           :closable="!route.query.processType"
           :closable="!route.query.processType"
           @close="handleClose(index)"
           @close="handleClose(index)"
-          >{{ item.fileName }}</el-tag
+          @click="handleClickFile(item)"
-        >
+          >{{ item.fileName }}
+          <span style="margin-left: 5px"
+            ><el-icon @click.native.stop="handleClickDownload(item)"
+              ><Download /></el-icon></span
+        ></el-tag>
       </div>
       </div>
       <div class="_t">请款明细</div>
       <div class="_t">请款明细</div>
       <el-form-item>
       <el-form-item>
@@ -495,6 +499,34 @@ const handleBeforeUpload = async (file) => {
 const handleClose = (index) => {
 const handleClose = (index) => {
   formData.data.fileList.splice(index, 1);
   formData.data.fileList.splice(index, 1);
 };
 };
+
+const handleClickFile = (file) => {
+  const path = file.path ? file.path : file.url ? file.url : "";
+  if (path) {
+    window.open(path, "_blank");
+  }
+};
+
+const handleClickDownload = (file) => {
+  let xhr = new XMLHttpRequest();
+  //域名是华为云的
+  xhr.open("GET", `${file.path}`, true);
+  xhr.responseType = "blob";
+  xhr.send();
+  xhr.onreadystatechange = function () {
+    if (xhr.readyState === 4 && xhr.status === 200) {
+      let url = window.URL.createObjectURL(xhr.response);
+      const a = document.createElement("a");
+      a.href = url;
+      a.download = file.fileName; // 下载后文件名
+      a.style.display = "none";
+      document.body.appendChild(a);
+      a.click(); // 点击下载
+      window.URL.revokeObjectURL(a.href);
+      document.body.removeChild(a); // 下载完成移除元素
+    }
+  };
+};
 // 向父组件暴露
 // 向父组件暴露
 defineExpose({
 defineExpose({
   submitData: formData.data,
   submitData: formData.data,

+ 38 - 1
src/views/WDLY/purchaseManage/alreadyPurchase/index.vue

@@ -259,7 +259,7 @@
                   </div>
                   </div>
                 </template>
                 </template>
               </el-table-column>
               </el-table-column>
-              <el-table-column prop="arrivalQuantity" label="已到货">
+              <!-- <el-table-column prop="arrivalQuantity" label="已到货">
                 <template #default="{ row }">
                 <template #default="{ row }">
                   <div>
                   <div>
                     <el-popover
                     <el-popover
@@ -294,7 +294,44 @@
                     </el-popover>
                     </el-popover>
                   </div>
                   </div>
                 </template>
                 </template>
+              </el-table-column> -->
+              <el-table-column prop="receiptQuantity" label="已入库">
+                <template #default="{ row }">
+                  <div>
+                    <el-popover
+                      placement="bottom-start"
+                      title="入库详情"
+                      :width="500"
+                      trigger="hover"
+                    >
+                      <div default>
+                        <el-table :data="row.receiptList">
+                          <el-table-column
+                            label="入库时间"
+                            prop="createTime"
+                            width="155"
+                          />
+                          <el-table-column
+                            label="入库单号"
+                            prop="logisticsCode"
+                          />
+                          <el-table-column
+                            label="数量"
+                            prop="quantity"
+                            width="100"
+                          />
+                        </el-table>
+                      </div>
+                      <template #reference>
+                        <div style="cursor: pointer; color: #0084ff">
+                          {{ row.receiptQuantity }}
+                        </div>
+                      </template>
+                    </el-popover>
+                  </div>
+                </template>
               </el-table-column>
               </el-table-column>
+
               <el-table-column prop="purchaseBackQuantity" label="退货">
               <el-table-column prop="purchaseBackQuantity" label="退货">
                 <template #default="{ row }">
                 <template #default="{ row }">
                   <div>
                   <div>

+ 13 - 8
src/views/WDLY/purchaseManage/purchase/index.vue

@@ -243,6 +243,7 @@ const getList = async (req) => {
     };
     };
   }
   }
   sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
   sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
+  getDeptList();
   loading.value = true;
   loading.value = true;
   proxy
   proxy
     .post("/subscribeDetail/pageByWdly", sourceList.value.pagination)
     .post("/subscribeDetail/pageByWdly", sourceList.value.pagination)
@@ -336,7 +337,17 @@ const start = (type) => {
 const warehouseList = ref([]);
 const warehouseList = ref([]);
 const productUnit = ref([]);
 const productUnit = ref([]);
 const deptData = ref([]);
 const deptData = ref([]);
-
+const getDeptList = () => {
+  proxy
+    .post("/subscribe/getDepts", { status: sourceList.value.pagination.status })
+    .then((res) => {
+      deptData.value = res.data;
+      selectConfig[2].data = res.data.map((x) => ({
+        label: x.deptName,
+        value: x.deptId,
+      }));
+    });
+};
 const getDict = () => {
 const getDict = () => {
   proxy.getDict(["unit"]).then((res) => {
   proxy.getDict(["unit"]).then((res) => {
     productUnit.value = res["unit"];
     productUnit.value = res["unit"];
@@ -353,13 +364,7 @@ const getDict = () => {
         value: x.id,
         value: x.id,
       }));
       }));
     });
     });
-  proxy.get("/subscribe/getDepts").then((res) => {
+  getDeptList();
-    deptData.value = res.data;
-    selectConfig[2].data = res.data.map((x) => ({
-      label: x.deptName,
-      value: x.deptId,
-    }));
-  });
 };
 };
 getDict();
 getDict();
 getList();
 getList();

+ 2 - 2
src/views/WDLY/purchaseManage/subscribe/index.vue

@@ -205,13 +205,13 @@ const config = computed(() => {
       // 渲染 el-button,一般用在最后一列。
       // 渲染 el-button,一般用在最后一列。
       renderHTML(row) {
       renderHTML(row) {
         return [
         return [
-          row.status == 30
+          row.status == 15
             ? {
             ? {
                 attrs: {
                 attrs: {
                   label: "作废",
                   label: "作废",
                   type: "danger",
                   type: "danger",
                   text: true,
                   text: true,
-                  disabled: row.status != 30,
+                  // disabled: row.status != 30,
                 },
                 },
                 el: "button",
                 el: "button",
                 click() {
                 click() {

+ 269 - 250
src/views/login.vue

@@ -1,64 +1,75 @@
 <template>
 <template>
-	<div class="login">
+  <div class="login">
-		<h1>ByteSailing</h1>
+    <h1>ByteSailing</h1>
-		<div class="content">
+    <div class="content">
-			<div class="warp-bg">
+      <div class="warp-bg">
-				<div class="left-bg">
+        <div class="left-bg">
-					<img src="../assets/images/login-img.png" alt="" />
+          <img src="../assets/images/login-img.png" alt="" />
-					
+
-					<div class="swiper-text">
+          <div class="swiper-text">
-						<el-carousel height="100px" direction="vertical" indicator-position='none' :autoplay="true">
+            <el-carousel
-							<el-carousel-item>
+              height="100px"
-								<h3>为中小企业提供数字化管理</h3>
+              direction="vertical"
-								<p>一站式定制解决方案</p>
+              indicator-position="none"
-							</el-carousel-item>
+              :autoplay="true"
-							<el-carousel-item>
+            >
-								<h3>物联网筑基,云计算赋能</h3>
+              <el-carousel-item>
-								<p>助力企业实现数字化协同</p>
+                <h3>为中小企业提供数字化管理</h3>
-							</el-carousel-item>
+                <p>一站式定制解决方案</p>
-							<el-carousel-item>
+              </el-carousel-item>
-								<h3>数据驱动,助力决策</h3>
+              <el-carousel-item>
-								<p>loT-SaaS定制全套解决方案</p>
+                <h3>物联网筑基,云计算赋能</h3>
-							</el-carousel-item>
+                <p>助力企业实现数字化协同</p>
-						</el-carousel>
+              </el-carousel-item>
-						
+              <el-carousel-item>
-					</div>
+                <h3>数据驱动,助力决策</h3>
-				</div>
+                <p>loT-SaaS定制全套解决方案</p>
-				<div class="right-bg">
+              </el-carousel-item>
-					<el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
+            </el-carousel>
-						<div class="form" style="margin-top:300px">
+          </div>
-							<div class="">欢迎登录~</div>
+        </div>
-							<h2>ByteSailing 管理系统</h2>
+        <div class="right-bg">
-							<el-form-item prop="tenantId" style="margin-top:30px">
+          <el-form
-								<el-input
+            ref="loginRef"
-									placeholder="请输入租户号"
+            :model="loginForm"
-									prefix-icon="user"
+            :rules="loginRules"
-									@keyup.enter="handleLogin"
+            class="login-form"
-									autocomplete="email"
+          >
-									v-model="loginForm.tenantId">
+            <div class="form" style="margin-top: 300px">
-									
+              <div class="">欢迎登录~</div>
-								</el-input>
+              <h2>ByteSailing 管理系统</h2>
-							</el-form-item>
+              <el-form-item prop="tenantId" style="margin-top: 30px">
-							<el-form-item prop="username" style="margin-top:30px">
+                <el-input
-								<el-input
+                  placeholder="请输入租户号"
-									placeholder="请输入账号"
+                  prefix-icon="user"
-									prefix-icon="UserFilled"
+                  @keyup.enter="handleLogin"
-									@keyup.enter="handleLogin"
+                  autocomplete="email"
-									autocomplete="username"
+                  v-model="loginForm.tenantId"
-									v-model="loginForm.username">
+                >
-								</el-input>
+                </el-input>
-							</el-form-item>
+              </el-form-item>
-							<el-form-item prop="password" style="margin-top:30px">
+              <el-form-item prop="username" style="margin-top: 30px">
-								<el-input
+                <el-input
-									placeholder="请输入密码"
+                  placeholder="请输入账号"
-									prefix-icon="View"
+                  prefix-icon="UserFilled"
-									type="password"
+                  @keyup.enter="handleLogin"
-									v-model="loginForm.password"
+                  autocomplete="username"
-									autocomplete="current-password"
+                  v-model="loginForm.username"
-									@keyup.enter="handleLogin">
+                >
-								</el-input>
+                </el-input>
-							</el-form-item>
+              </el-form-item>
-							<!-- <el-form-item prop="code" class="code" style="margin-top:30px">
+              <el-form-item prop="password" style="margin-top: 30px">
+                <el-input
+                  placeholder="请输入密码"
+                  prefix-icon="View"
+                  type="password"
+                  v-model="loginForm.password"
+                  autocomplete="current-password"
+                  @keyup.enter="handleLogin"
+                >
+                </el-input>
+              </el-form-item>
+              <!-- <el-form-item prop="code" class="code" style="margin-top:30px">
 								<el-input
 								<el-input
 									placeholder="请输入验证码"
 									placeholder="请输入验证码"
 									prefix-icon="ChatSquare"
 									prefix-icon="ChatSquare"
@@ -67,220 +78,228 @@
 								</el-input>
 								</el-input>
 								<img :src="codeUrl" @click="getCode" class="login-code-img"/>
 								<img :src="codeUrl" @click="getCode" class="login-code-img"/>
 							</el-form-item> -->
 							</el-form-item> -->
-							<div  style="margin-top:30px">
+              <div style="margin-top: 30px">
-								<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
+                <el-checkbox
-							</div>
+                  v-model="loginForm.rememberMe"
-							<el-button type="primary"  @click="handleLogin" style="width:100%;margin-top:30px">登录</el-button>
+                  style="margin: 0px 0px 25px 0px"
-						</div>
+                  >记住密码</el-checkbox
-					
+                >
-					</el-form>
+              </div>
-					
+              <el-button
-				</div>
+                type="primary"
-			</div>
+                @click="handleLogin"
-		</div>
+                style="width: 100%; margin-top: 30px"
-	</div>
+                >登录</el-button
+              >
+            </div>
+          </el-form>
+        </div>
+      </div>
+    </div>
+  </div>
 </template>
 </template>
 
 
 <script setup>
 <script setup>
-import { getCodeImg } from '@/api/login'
+import { getCodeImg } from "@/api/login";
-import Cookies from 'js-cookie'
+import Cookies from "js-cookie";
-import { encrypt, decrypt } from '@/utils/jsencrypt'
+import { encrypt, decrypt } from "@/utils/jsencrypt";
-import useUserStore from '@/store/modules/user'
+import useUserStore from "@/store/modules/user";
 
 
-const userStore = useUserStore()
+const userStore = useUserStore();
-const router = useRouter()
+const router = useRouter();
-const { proxy } = getCurrentInstance()
+const { proxy } = getCurrentInstance();
 
 
 const loginForm = ref({
 const loginForm = ref({
-	username: '',
+  username: "",
-	password: '',
+  password: "",
-	rememberMe: false,
+  rememberMe: false,
-	tenantId:'',
+  tenantId: "",
-	code: '',
+  code: "",
-	uuid: '',
+  uuid: "",
-})
+});
 
 
 const loginRules = {
 const loginRules = {
-	username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }],
+  username: [{ required: true, trigger: "blur", message: "请输入您的账号" }],
-	password: [{ required: true, trigger: 'blur', message: '请输入您的密码' }],
+  password: [{ required: true, trigger: "blur", message: "请输入您的密码" }],
-	code: [{ required: true, trigger: 'change', message: '请输入验证码' }],
+  code: [{ required: true, trigger: "change", message: "请输入验证码" }],
-}
+};
 
 
-const codeUrl = ref('')
+const codeUrl = ref("");
-const loading = ref(false)
+const loading = ref(false);
 // 验证码开关
 // 验证码开关
-const captchaEnabled = ref(true)
+const captchaEnabled = ref(true);
 // 注册开关
 // 注册开关
-const register = ref(false)
+const register = ref(false);
-const redirect = ref(undefined)
+const redirect = ref(undefined);
 
 
 function handleLogin() {
 function handleLogin() {
-	proxy.$refs.loginRef.validate((valid) => {
+  proxy.$refs.loginRef.validate((valid) => {
-		if (valid) {
+    if (valid) {
-			loading.value = true
+      loading.value = true;
-			Cookies.set('tenantId', loginForm.value.tenantId, {
+      Cookies.set("tenantId", loginForm.value.tenantId, {
-				expires: 30,
+        expires: 30,
-			})
+      });
-			// 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
+      // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
-			if (loginForm.value.rememberMe) {
+      if (loginForm.value.rememberMe) {
-				Cookies.set('username', loginForm.value.username, {
+        Cookies.set("username", loginForm.value.username, {
-					expires: 30,
+          expires: 30,
-				})
+        });
-				
+
-				Cookies.set('password', encrypt(loginForm.value.password), {
+        Cookies.set("password", encrypt(loginForm.value.password), {
-					expires: 30,
+          expires: 30,
-				})
+        });
-				Cookies.set('rememberMe', loginForm.value.rememberMe, {
+        Cookies.set("rememberMe", loginForm.value.rememberMe, {
-					expires: 30,
+          expires: 30,
-				})
+        });
-			} else {
+      } else {
-				// 否则移除
+        // 否则移除
-				
+
-				Cookies.remove('username')
+        Cookies.remove("username");
-				Cookies.remove('password')
+        Cookies.remove("password");
-				Cookies.remove('rememberMe')
+        Cookies.remove("rememberMe");
-			}
+      }
-			// 调用action的登录方法
+      // 调用action的登录方法
-			userStore
+      userStore
-				.login(loginForm.value)
+        .login(loginForm.value)
-				.then(() => {
+        .then(() => {
-					router.push({ path: redirect.value || '/' })
+          router.push({ path: redirect.value || "/" });
-				})
+          // 登录刷新
-				.catch(() => {
+          setTimeout(() => {
-					loading.value = false
+            location.reload();
-					// 重新获取验证码
+          }, 100);
-					if (captchaEnabled.value) {
+        })
-						getCode()
+        .catch(() => {
-					}
+          loading.value = false;
-				})
+          // 重新获取验证码
-		}
+          if (captchaEnabled.value) {
-	})
+            getCode();
+          }
+        });
+    }
+  });
 }
 }
 
 
 function getCode() {
 function getCode() {
-	getCodeImg().then((res) => {
+  getCodeImg().then((res) => {
-		captchaEnabled.value =
+    captchaEnabled.value =
-			res.captchaEnabled === undefined ? true : res.captchaEnabled
+      res.captchaEnabled === undefined ? true : res.captchaEnabled;
-		if (captchaEnabled.value) {
+    if (captchaEnabled.value) {
-			codeUrl.value = 'data:image/gif;base64,' + res.img
+      codeUrl.value = "data:image/gif;base64," + res.img;
-			loginForm.value.uuid = res.uuid
+      loginForm.value.uuid = res.uuid;
-		}
+    }
-	})
+  });
 }
 }
 
 
 function getCookie() {
 function getCookie() {
-	const username = Cookies.get('username')
+  const username = Cookies.get("username");
-	const password = Cookies.get('password')
+  const password = Cookies.get("password");
-	const rememberMe = Cookies.get('rememberMe')
+  const rememberMe = Cookies.get("rememberMe");
-	const tenantId = Cookies.get('tenantId')
+  const tenantId = Cookies.get("tenantId");
-	loginForm.value = {
+  loginForm.value = {
-		username: username === undefined ? loginForm.value.username : username,
+    username: username === undefined ? loginForm.value.username : username,
-		password:
+    password:
-			password === undefined
+      password === undefined ? loginForm.value.password : decrypt(password),
-				? loginForm.value.password
+    rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
-				: decrypt(password),
+    tenantId: tenantId === undefined ? loginForm.value.tenantId : tenantId,
-		rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
+  };
-		tenantId: tenantId === undefined ? loginForm.value.tenantId : tenantId,
-	}
 }
 }
 
 
-getCode()
+getCode();
-getCookie()
+getCookie();
 </script>
 </script>
 
 
 <style lang="scss">
 <style lang="scss">
-.login{
+.login {
-	.warp-bg{
+  .warp-bg {
-		background: #fff;
+    background: #fff;
-		height: 100vh;
+    height: 100vh;
-		width: 100vw;
+    width: 100vw;
-		overflow: hidden;
+    overflow: hidden;
-		.left-bg{
+    .left-bg {
-			width: calc(50vw + 200px);
+      width: calc(50vw + 200px);
-			background: #0084FF;
+      background: #0084ff;
-			height: 100vh;
+      height: 100vh;
-			float: left;
+      float: left;
-			overflow: hidden;
+      overflow: hidden;
-			position: relative;
+      position: relative;
-			img{
+      img {
-				float: right;
+        float: right;
-				margin-right: 75px;
+        margin-right: 75px;
-				margin-top: 120px;
+        margin-top: 120px;
-			}
+      }
 
 
-			.swiper-text{
+      .swiper-text {
-				position: absolute;
+        position: absolute;
-				right: 164px;
+        right: 164px;
-				top: 120px;
+        top: 120px;
-				color:#fff;
+        color: #fff;
-				overflow: hidden;
+        overflow: hidden;
-				height: 200px;
+        height: 200px;
-				width: 500px;
+        width: 500px;
-				.el-carousel{
+        .el-carousel {
-					width: 100%;
+          width: 100%;
-					height: 100%;
+          height: 100%;
-				}
+        }
-				h3{
+        h3 {
-					font-size: 40px;
+          font-size: 40px;
-					font-weight: 400;
+          font-weight: 400;
-					margin-bottom: 20px;
+          margin-bottom: 20px;
-					margin-top: 0;
+          margin-top: 0;
-				}
+        }
-				p{
+        p {
-					font-size: 26px;
+          font-size: 26px;
-					margin: 0;
+          margin: 0;
-				}
+        }
-				p::before{
+        p::before {
-					content:' ';
+          content: " ";
-					border-bottom: 4px solid #fff;
+          border-bottom: 4px solid #fff;
-					display: inline-block;
+          display: inline-block;
-					width: 60px;
+          width: 60px;
-					margin-right: 20px;
+          margin-right: 20px;
-					position: relative;
+          position: relative;
-					top:-5px;
+          top: -5px;
-				}
+        }
-			}
+      }
-		}
+    }
-		.right-bg{
+    .right-bg {
-			width: calc(50vw - 200px);
+      width: calc(50vw - 200px);
-			background: url(../assets/images/login-right-bg.png) no-repeat;
+      background: url(../assets/images/login-right-bg.png) no-repeat;
-			background-size: cover;
+      background-size: cover;
-			height: 100vh;
+      height: 100vh;
-			float: right;
+      float: right;
-			overflow: hidden;
+      overflow: hidden;
-			.form{
+      .form {
-				width: 500px;
+        width: 500px;
-				padding:0 75px;
+        padding: 0 75px;
-				box-sizing: border-box;
+        box-sizing: border-box;
-				.el-input{
+        .el-input {
-					input{
+          input {
-						border:none;
+            border: none;
-						border-bottom: 1px solid #DDDDDD;
+            border-bottom: 1px solid #dddddd;
-					}
+          }
-				}
+        }
-				.el-input__wrapper{
+        .el-input__wrapper {
-					box-shadow:0 0 0 0!important;
+          box-shadow: 0 0 0 0 !important;
-				}
+        }
-				.code{
+        .code {
-					position: relative;
+          position: relative;
-					img{
+          img {
-						position: absolute;
+            position: absolute;
-						right: 0;
+            right: 0;
-						bottom: 0;
+            bottom: 0;
-					}
+          }
-				}
+        }
-			}
+      }
-		}
+    }
-	}
+  }
-	h1{
+  h1 {
-		position: fixed;
+    position: fixed;
-		left: 40px;
+    left: 40px;
-		top: 0;
+    top: 0;
-		height: 96px;
+    height: 96px;
-		line-height: 96px;
+    line-height: 96px;
-		font-size: 26px;
+    font-size: 26px;
-		color: #fff;
+    color: #fff;
-	}
+  }
-	
 }
 }
 </style>
 </style>

+ 201 - 103
src/views/process/processApproval/index.vue

@@ -5,41 +5,108 @@
         <div class="commons-title title">
         <div class="commons-title title">
           {{ route.query.flowName || "流程标题(发起)" }}
           {{ route.query.flowName || "流程标题(发起)" }}
         </div>
         </div>
-        <SendSubscribe ref="makeDom" v-if="flowForm.flowKey == 'subscribe_flow'"></SendSubscribe>
+        <SendSubscribe
-        <SendPurchase ref="makeDom" v-else-if="flowForm.flowKey == 'purchase_flow'" :queryData="queryData.data"></SendPurchase>
+          ref="makeDom"
-        <SendFunds ref="makeDom" v-else-if="flowForm.flowKey == 'account_request_funds_flow'" :queryData="queryData.data"></SendFunds>
+          v-if="flowForm.flowKey == 'subscribe_flow'"
-        <ReturnGood ref="makeDom" v-else-if="flowForm.flowKey == 'sales_return_flow'" :queryData="queryData.data"></ReturnGood>
+        ></SendSubscribe>
-        <PurchaseRefund ref="makeDom" v-else-if="flowForm.flowKey == 'refund_flow'" :queryData="queryData.data"></PurchaseRefund>
+        <SendPurchase
-        <PurchasePayment ref="makeDom" v-else-if="flowForm.flowKey == 'pay_flow'" :queryData="queryData.data"></PurchasePayment>
+          ref="makeDom"
+          v-else-if="flowForm.flowKey == 'purchase_flow'"
+          :queryData="queryData.data"
+        ></SendPurchase>
+        <SendFunds
+          ref="makeDom"
+          v-else-if="flowForm.flowKey == 'account_request_funds_flow'"
+          :queryData="queryData.data"
+        ></SendFunds>
+        <ReturnGood
+          ref="makeDom"
+          v-else-if="flowForm.flowKey == 'sales_return_flow'"
+          :queryData="queryData.data"
+        ></ReturnGood>
+        <PurchaseRefund
+          ref="makeDom"
+          v-else-if="flowForm.flowKey == 'refund_flow'"
+          :queryData="queryData.data"
+        ></PurchaseRefund>
+        <PurchasePayment
+          ref="makeDom"
+          v-else-if="flowForm.flowKey == 'pay_flow'"
+          :queryData="queryData.data"
+        ></PurchasePayment>
         <template v-else-if="flowForm.flowKey == 'sale_quotation_flow'">
         <template v-else-if="flowForm.flowKey == 'sale_quotation_flow'">
-          <PriceSheetEHSD ref="makeDom" v-if="flowForm.tenantType === 'EHSD'" :queryData="queryData.data"></PriceSheetEHSD>
+          <PriceSheetEHSD
-          <PriceSheet ref="makeDom" v-else :queryData="queryData.data"></PriceSheet>
+            ref="makeDom"
+            v-if="flowForm.tenantType === 'EHSD'"
+            :queryData="queryData.data"
+          ></PriceSheetEHSD>
+          <PriceSheet
+            ref="makeDom"
+            v-else
+            :queryData="queryData.data"
+          ></PriceSheet>
         </template>
         </template>
         <template v-else-if="flowForm.flowKey == 'contract_flow'">
         <template v-else-if="flowForm.flowKey == 'contract_flow'">
-          <ContractEHSD ref="makeDom" v-if="flowForm.tenantType === 'EHSD'" :queryData="queryData.data"></ContractEHSD>
+          <ContractEHSD
+            ref="makeDom"
+            v-if="flowForm.tenantType === 'EHSD'"
+            :queryData="queryData.data"
+          ></ContractEHSD>
           <Contract ref="makeDom" v-else :queryData="queryData.data"></Contract>
           <Contract ref="makeDom" v-else :queryData="queryData.data"></Contract>
         </template>
         </template>
         <template v-else-if="flowForm.flowKey == 'sample_flow'">
         <template v-else-if="flowForm.flowKey == 'sample_flow'">
           <SampleEHSD ref="makeDom" :queryData="queryData.data"></SampleEHSD>
           <SampleEHSD ref="makeDom" :queryData="queryData.data"></SampleEHSD>
         </template>
         </template>
         <template v-else-if="flowForm.flowKey == 'ehsd_purchase_flow'">
         <template v-else-if="flowForm.flowKey == 'ehsd_purchase_flow'">
-          <PurchaseEHSD ref="makeDom" :queryData="queryData.data"></PurchaseEHSD>
+          <PurchaseEHSD
+            ref="makeDom"
+            :queryData="queryData.data"
+          ></PurchaseEHSD>
         </template>
         </template>
 
 
-        <ServiceContract ref="makeDom" v-else-if="flowForm.flowKey == 'service_contract_flow'" :queryData="queryData.data"></ServiceContract>
+        <ServiceContract
+          ref="makeDom"
+          v-else-if="flowForm.flowKey == 'service_contract_flow'"
+          :queryData="queryData.data"
+        ></ServiceContract>
         <!-- 维多利亚 -->
         <!-- 维多利亚 -->
-        <SendSubscribeWDLY ref="makeDom" v-else-if="flowForm.flowKey == 'wdly_apply_purchase'" :queryData="queryData.data"></SendSubscribeWDLY>
+        <SendSubscribeWDLY
-        <SendPurchaseWDLY ref="makeDom" v-else-if="flowForm.flowKey == 'wdly_purchase'" :queryData="queryData.data"></SendPurchaseWDLY>
+          ref="makeDom"
+          v-else-if="flowForm.flowKey == 'wdly_apply_purchase'"
+          :queryData="queryData.data"
+        ></SendSubscribeWDLY>
+        <SendPurchaseWDLY
+          ref="makeDom"
+          v-else-if="flowForm.flowKey == 'wdly_purchase'"
+          :queryData="queryData.data"
+        ></SendPurchaseWDLY>
       </div>
       </div>
       <div class="bottom" v-if="route.query.processType != 20">
       <div class="bottom" v-if="route.query.processType != 20">
         <div class="commons-title title">处理意见</div>
         <div class="commons-title title">处理意见</div>
         <el-form :model="flowForm" :rules="flowRules" ref="flowFormDom">
         <el-form :model="flowForm" :rules="flowRules" ref="flowFormDom">
           <el-form-item prop="remark" label-width="0px" label="">
           <el-form-item prop="remark" label-width="0px" label="">
-            <el-input type="textarea" placeholder="请输入" v-model="flowForm.remark"> </el-input>
+            <el-input
+              type="textarea"
+              placeholder="请输入"
+              v-model="flowForm.remark"
+            >
+            </el-input>
           </el-form-item>
           </el-form-item>
           <el-form-item>
           <el-form-item>
-            <el-button type="primary" v-if="approvalRecordData.buttonInfoList.length == 0" @click="handleSubmit">提交</el-button>
+            <el-button
-            <el-button type="primary" v-else v-for="i in approvalRecordData.buttonInfoList" :key="i.type" @click="handleSubmit(i.type)">{{ i.name }}</el-button>
+              type="primary"
+              v-if="approvalRecordData.buttonInfoList.length == 0"
+              @click="handleSubmit"
+              >提交</el-button
+            >
+            <el-button
+              type="primary"
+              v-else
+              v-for="i in approvalRecordData.buttonInfoList"
+              :key="i.type"
+              @click="handleSubmit(i.type)"
+              >{{ i.name }}</el-button
+            >
           </el-form-item>
           </el-form-item>
         </el-form>
         </el-form>
       </div>
       </div>
@@ -52,8 +119,15 @@
               v-for="item in recordList"
               v-for="item in recordList"
               :key="item.id"
               :key="item.id"
               :class="
               :class="
-                item.status == 2 ? 'flow-orange' : item.status == 3 && !route.query.id ? 'flow-orange' : item.status == 3 && route.query.id ? 'flow-grey' : ''
+                item.status == 2
-              ">
+                  ? 'flow-orange'
+                  : item.status == 3 && !route.query.id
+                  ? 'flow-orange'
+                  : item.status == 3 && route.query.id
+                  ? 'flow-grey'
+                  : ''
+              "
+            >
               <div class="left-icon">
               <div class="left-icon">
                 <i class="iconfont icon-iconm_daick"></i>
                 <i class="iconfont icon-iconm_daick"></i>
                 <i class="iconfont icon-icomx_quertj1 right-btm-status"></i>
                 <i class="iconfont icon-icomx_quertj1 right-btm-status"></i>
@@ -62,7 +136,9 @@
                 <div class="name">{{ item.nodeName }}</div>
                 <div class="name">{{ item.nodeName }}</div>
                 <div class="remark">
                 <div class="remark">
                   <div class="label">
                   <div class="label">
-                    <span v-if="item.status != 3">办理人:</span>{{ item.processedUser }}<span class="time">{{ item.processedDate }}</span>
+                    <span v-if="item.status != 3">办理人:</span
+                    >{{ item.processedUser
+                    }}<span class="time">{{ item.processedDate }}</span>
                   </div>
                   </div>
                   {{ item.remark }}
                   {{ item.remark }}
                 </div>
                 </div>
@@ -81,8 +157,18 @@
     <el-dialog title="下一处理人" width="400" v-model="dialogVisible">
     <el-dialog title="下一处理人" width="400" v-model="dialogVisible">
       <el-form :model="flowForm">
       <el-form :model="flowForm">
         <el-form-item prop="remark" label="处理人">
         <el-form-item prop="remark" label="处理人">
-          <el-select v-model="flowForm.handleUserId" placeholder="请选择" filterable style="width: 100%">
+          <el-select
-            <el-option v-for="item in nextHandleUser" :label="item.name" :value="item.id"> </el-option>
+            v-model="flowForm.handleUserId"
+            placeholder="请选择"
+            filterable
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in nextHandleUser"
+              :label="item.name"
+              :value="item.id"
+            >
+            </el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
         <el-form-item>
         <el-form-item>
@@ -234,16 +320,18 @@ const handleSubmit = async (_type) => {
               data.ehsdJson = JSON.stringify({
               data.ehsdJson = JSON.stringify({
                 deliveryTime: data.deliveryTime,
                 deliveryTime: data.deliveryTime,
               });
               });
-              data.quotationProductList = data.quotationProductList.map((item) => {
+              data.quotationProductList = data.quotationProductList.map(
-                let ehsdJson = JSON.stringify({
+                (item) => {
-                  packMethod: item.packMethod,
+                  let ehsdJson = JSON.stringify({
-                  tradeMethods: item.tradeMethods,
+                    packMethod: item.packMethod,
-                });
+                    tradeMethods: item.tradeMethods,
-                return {
+                  });
-                  ...item,
+                  return {
-                  ehsdJson: ehsdJson,
+                    ...item,
-                };
+                    ehsdJson: ehsdJson,
-              });
+                  };
+                }
+              );
             }
             }
           } else if (flowForm.flowKey == "contract_flow") {
           } else if (flowForm.flowKey == "contract_flow") {
             if (flowForm.tenantType === "EHSD") {
             if (flowForm.tenantType === "EHSD") {
@@ -272,16 +360,18 @@ const handleSubmit = async (_type) => {
               data.ehsdJson = JSON.stringify({
               data.ehsdJson = JSON.stringify({
                 deliveryTime: data.deliveryTime,
                 deliveryTime: data.deliveryTime,
               });
               });
-              data.contractProductList = data.contractProductList.map((item) => {
+              data.contractProductList = data.contractProductList.map(
-                let ehsdJson = JSON.stringify({
+                (item) => {
-                  packMethod: item.packMethod,
+                  let ehsdJson = JSON.stringify({
-                  tradeMethods: item.tradeMethods,
+                    packMethod: item.packMethod,
-                });
+                    tradeMethods: item.tradeMethods,
-                return {
+                  });
-                  ...item,
+                  return {
-                  ehsdJson: ehsdJson,
+                    ...item,
-                };
+                    ehsdJson: ehsdJson,
-              });
+                  };
+                }
+              );
             }
             }
           } else if (flowForm.flowKey == "sample_flow") {
           } else if (flowForm.flowKey == "sample_flow") {
             if (data.fileList && data.fileList.length > 0) {
             if (data.fileList && data.fileList.length > 0) {
@@ -352,77 +442,83 @@ const handleSubmit = async (_type) => {
 };
 };
 // 页面跳转
 // 页面跳转
 const skipPage = () => {
 const skipPage = () => {
-  const useTagsStore = useTagsViewStore();
+  if (route.query.processType === 10) {
-  console.log(useTagsStore);
-  useTagsStore.delVisitedView(router.currentRoute.value);
-  ElMessage({
-    message: "操作成功!",
-    type: "success",
-  });
-  if (flowForm.flowKey == "subscribe_flow") {
-    router.replace({
-      path: "/ERP/purchaseManage/subscribe",
-    });
-  } else if (flowForm.flowKey == "purchase_flow") {
     router.replace({
     router.replace({
-      path: "/ERP/purchaseManage/purchase",
+      path: "/oa/1/dealWith",
     });
     });
-  } else if (flowForm.flowKey == "sales_return_flow") {
+  } else {
-    router.replace({
+    const useTagsStore = useTagsViewStore();
-      path: "/ERP/purchaseManage/returnGoods",
+    console.log(useTagsStore);
-    });
+    useTagsStore.delVisitedView(router.currentRoute.value);
-  } else if (flowForm.flowKey == "account_request_funds_flow") {
+    ElMessage({
-    router.replace({
+      message: "操作成功!",
-      path: "/ERP/fundManage/funds",
+      type: "success",
-    });
-  } else if (flowForm.flowKey == "refund_flow") {
-    router.replace({
-      path: "/ERP/purchasePayment/invoice",
-    });
-  } else if (flowForm.flowKey == "pay_flow") {
-    router.replace({
-      path: "/ERP/purchasePayment/payment",
     });
     });
-  } else if (flowForm.flowKey == "sale_quotation_flow") {
+    if (flowForm.flowKey == "subscribe_flow") {
-    if (flowForm.tenantType === "EHSD") {
       router.replace({
       router.replace({
-        path: "/EHSD/saleContract/priceSheetEHSD",
+        path: "/ERP/purchaseManage/subscribe",
       });
       });
-    } else {
+    } else if (flowForm.flowKey == "purchase_flow") {
       router.replace({
       router.replace({
-        path: "/ERP/saleContract/priceSheet",
+        path: "/ERP/purchaseManage/purchase",
       });
       });
-    }
+    } else if (flowForm.flowKey == "sales_return_flow") {
-  } else if (flowForm.flowKey == "contract_flow") {
+      router.replace({
-    if (flowForm.tenantType === "EHSD") {
+        path: "/ERP/purchaseManage/returnGoods",
+      });
+    } else if (flowForm.flowKey == "account_request_funds_flow") {
+      router.replace({
+        path: "/ERP/fundManage/funds",
+      });
+    } else if (flowForm.flowKey == "refund_flow") {
       router.replace({
       router.replace({
-        path: "/EHSD/saleContract/contractEHSD",
+        path: "/ERP/purchasePayment/invoice",
       });
       });
-    } else {
+    } else if (flowForm.flowKey == "pay_flow") {
       router.replace({
       router.replace({
-        path: "/ERP/saleContract/contract",
+        path: "/ERP/purchasePayment/payment",
+      });
+    } else if (flowForm.flowKey == "sale_quotation_flow") {
+      if (flowForm.tenantType === "EHSD") {
+        router.replace({
+          path: "/EHSD/saleContract/priceSheetEHSD",
+        });
+      } else {
+        router.replace({
+          path: "/ERP/saleContract/priceSheet",
+        });
+      }
+    } else if (flowForm.flowKey == "contract_flow") {
+      if (flowForm.tenantType === "EHSD") {
+        router.replace({
+          path: "/EHSD/saleContract/contractEHSD",
+        });
+      } else {
+        router.replace({
+          path: "/ERP/saleContract/contract",
+        });
+      }
+    } else if (flowForm.flowKey == "sample_flow") {
+      router.replace({
+        path: "/EHSD/saleContract/sampleEHSD",
+      });
+    } else if (flowForm.flowKey == "ehsd_purchase_flow") {
+      router.replace({
+        path: "/EHSD/procurement/purchasedEHSD",
+      });
+    } else if (flowForm.flowKey == "service_contract_flow") {
+      router.replace({
+        path: "/ERP/saleContract/serviceContract",
+      });
+    } else if (flowForm.flowKey == "wdly_purchase") {
+      router.replace({
+        path: "/WDLY/purchaseManage/alreadyPurchase_wdly",
+      });
+    } else if (flowForm.flowKey == "wdly_apply_purchase") {
+      router.replace({
+        path: "/WDLY/purchaseManage/subscribe_wdly",
       });
       });
     }
     }
-  } else if (flowForm.flowKey == "sample_flow") {
-    router.replace({
-      path: "/EHSD/saleContract/sampleEHSD",
-    });
-  } else if (flowForm.flowKey == "ehsd_purchase_flow") {
-    router.replace({
-      path: "/EHSD/procurement/purchasedEHSD",
-    });
-  } else if (flowForm.flowKey == "service_contract_flow") {
-    router.replace({
-      path: "/ERP/saleContract/serviceContract",
-    });
-  } else if (flowForm.flowKey == "wdly_purchase") {
-    router.replace({
-      path: "/WDLY/purchaseManage/alreadyPurchase_wdly",
-    });
-  } else if (flowForm.flowKey == "wdly_apply_purchase") {
-    router.replace({
-      path: "/WDLY/purchaseManage/subscribe_wdly",
-    });
   }
   }
 };
 };
 let queryData = reactive({
 let queryData = reactive({
@@ -458,9 +554,11 @@ const getRecords = (_id) => {
 onMounted(() => {
 onMounted(() => {
   //processType 10 为修改 20为查看
   //processType 10 为修改 20为查看
   if (route.query.processType == 10 || route.query.processType == 20) {
   if (route.query.processType == 10 || route.query.processType == 20) {
-    proxy.post("/flowProcess/getStartData", { flowId: route.query.id }).then((res) => {
+    proxy
-      queryData.data = { ...res };
+      .post("/flowProcess/getStartData", { flowId: route.query.id })
-    });
+      .then((res) => {
+        queryData.data = { ...res };
+      });
   } else {
   } else {
     queryData.data = { ...route.query };
     queryData.data = { ...route.query };
   }
   }

+ 1 - 0
vite.config.js

@@ -40,6 +40,7 @@ export default defineConfig(({
         // https://cn.vitejs.dev/config/#server-proxy
         // https://cn.vitejs.dev/config/#server-proxy
         '/dev-api': {
         '/dev-api': {
           target: 'http://36.134.91.96:9898/test-api',
           target: 'http://36.134.91.96:9898/test-api',
+          // 正式地址
           // target:"http://139.159.251.109/prod-api",
           // target:"http://139.159.251.109/prod-api",
           changeOrigin: true,
           changeOrigin: true,
           rewrite: (p) => p.replace(/^\/dev-api/, '')
           rewrite: (p) => p.replace(/^\/dev-api/, '')