qinxianzhangyao
2023-10-19 ceb611ede1ca3988d731adffee433a1a7bcd442b
tjxgstf
27个文件已修改
2个文件已添加
1016 ■■■■ 已修改文件
public/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
public/index.html 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/system/user.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/styles/index.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Sidebar/Logo.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Sidebar/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/devicePixelRatio.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/Summary/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/Sumrecord/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/about/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/fuzhen/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/order/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/settlement/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jmreport/jmreport/charge.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jmreport/kstj/index.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jmreport/yctj/index.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jmreport/ysgzltj/index.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jmreport/zjtj/index.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/reservation/reservations/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/bill/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/examcharge/index.vue 160 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/indrefund/index.vue 456 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/invoice/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/register/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/index.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/favicon.ico

public/index.html
@@ -1,12 +1,15 @@
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <!-- <link rel="icon" href="<%= BASE_URL %>favicon.ico"> -->
    <title><%= webpackConfig.name %></title>
  <title>
    <%= webpackConfig.name %>
  </title>
    <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
      <style>
    html,
@@ -16,6 +19,7 @@
      margin: 0px;
      padding: 0px;
    }
    .chromeframe {
      margin: 0.2em 0;
      background: #ccc;
@@ -92,6 +96,7 @@
        -ms-transform: rotate(0deg);
        transform: rotate(0deg);
      }
      100% {
        -webkit-transform: rotate(360deg);
        -ms-transform: rotate(360deg);
@@ -105,6 +110,7 @@
        -ms-transform: rotate(0deg);
        transform: rotate(0deg);
      }
      100% {
        -webkit-transform: rotate(360deg);
        -ms-transform: rotate(360deg);
@@ -195,6 +201,7 @@
    }
  </style>
  </head>
  <body>
    <div id="app">
        <div id="loader-wrapper">
@@ -205,4 +212,5 @@
        </div>
    </div>
  </body>
</html>
src/App.vue
@@ -8,6 +8,7 @@
<script>
import ThemePicker from "@/components/ThemePicker";
import devPixelRatio from "@/utils/devicePixelRatio.js";
export default {
  name: "App",
  components: { ThemePicker },
@@ -18,11 +19,19 @@
                return title ? `${title} - ${process.env.VUE_APP_TITLE}` : process.env.VUE_APP_TITLE
            }
        }
    }
  },
  created() {
    new devPixelRatio().init(); // 初始化页面比例
  },
};
</script>
<style scoped>
#app .theme-picker {
  display: none;
}
body {
  margin: 0;
  padding: 0;
}
</style>
src/api/system/user.js
@@ -92,6 +92,8 @@
// 用户密码重置
export function updateUserPwd(oldPassword, newPassword) {
   oldPassword = encrypt(oldPassword);
   newPassword = encrypt(newPassword);
  const data = {
    oldPassword,
    newPassword
src/assets/styles/index.scss
@@ -122,6 +122,7 @@
//main-container全局样式
.app-container {
  padding: 20px;
  width: 100%;
}
.components-container {
src/layout/components/Sidebar/Logo.vue
@@ -2,12 +2,12 @@
  <div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
    <transition name="sidebarLogoFade">
      <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
        <img v-if="logo" :src="logo" class="sidebar-logo" />
        <h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
        <!-- <img v-if="logo" :src="logo" class="sidebar-logo" /> -->
        <!-- <h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1> -->
        <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
      </router-link>
      <router-link v-else key="expand" class="sidebar-logo-link" to="/">
        <img v-if="logo" :src="logo" class="sidebar-logo" />
        <!-- <img v-if="logo" :src="logo" class="sidebar-logo" /> -->
        <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
      </router-link>
    </transition>
@@ -15,7 +15,7 @@
</template>
<script>
import logoImg from '@/assets/logo/logo.png'
// import logoImg from '@/assets/logo/logo.png'
import variables from '@/assets/styles/variables.scss'
export default {
@@ -37,7 +37,7 @@
  data() {
    return {
      title: '智慧健康体检管理系统',
      logo: logoImg
      // logo: logoImg
    }
  }
}
src/layout/components/Sidebar/index.vue
@@ -3,6 +3,7 @@
        <logo v-if="showLogo" :collapse="isCollapse" />
        <el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
            <el-menu
            :default-openeds="['/tijian']"
                :default-active="activeMenu"
                :collapse="isCollapse"
                :background-color="settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground"
src/router/index.js
@@ -28,6 +28,7 @@
  }
 */
// 公共路由
export const constantRoutes = [
  {
@@ -56,6 +57,69 @@
        component: () => import('@/views/system/ssdm/index'),
        name:'rmer',
        meta: { title: '知识库管理 ', icon: 'dashboard', }
      },
    ]
  },
  {
    path: '/system',
    component: Layout,
    hidden: true,
    children: [
      {
        path: 'about',
        component: () => import('@/views/hosp/about/index'),
        name: 'AuthRole',
        meta: { title: '日结查询' }
      }
    ]
  },
   // 导检单和体检报告页面标签栏
   {
    path: '/report',
    component: Layout,
    hidden: true,
    children: [
      {
        path: 'breDailyReport',
        component: () => import('@/views/jmreport/jmreport/view'),
        name:'DailyReportReport',
        meta:{title:'导检单',activeMenu:'/bre/DailyReport'},
      },
      {
        path: 'viewReport',
        component: () => import('@/views/jmreport/jmreport/view'),
        name:'DailyReportReport',
        meta:{title:'体检报告',activeMenu:'/bre/viewReport'},
      },
      {
        path: 'settlement',
        component: () => import('@/views/jmreport/jmreport/settlement'),
        name:'DailyReportReport',
        meta:{title:'个人结账单',activeMenu:'/bre/settlement'},
      },
      {
        path: 'charge',
        component: () => import('@/views/jmreport/jmreport/charge'),
        name:'DailyReportReport',
        meta:{title:'收款小票',activeMenu:'/bre/charge'},
      },
      {
        path: 'refund',
        component: () => import('@/views/jmreport/jmreport/refund'),
        name:'DailyReportReport',
        meta:{title:'退款小票',activeMenu:'/bre/refund'},
      },
      {
        path: 'invoice',
        component: () => import('@/views/jmreport/jmreport/invoice'),
        name:'DailyReportReport',
        meta:{title:'发票',activeMenu:'/bre/invoice'},
      },
      {
        path: 'groupReport',
        component: () => import('@/views/jmreport/jmreport/groupReport'),
        name:'DailyReportReport',
        meta:{title:'团队报告',activeMenu:'/bre/groupReport '},
      },
    ]
  },
@@ -199,71 +263,73 @@
    ]
  },
  // 导检单和体检报告页面标签栏
  {
    path: '/report',
    component: Layout,
    hidden: true,
    permissions: ['bre:DailyReport:list'],
    children: [
      {
        path: 'breDailyReport',
        component: () => import('@/views/jmreport/jmreport/view'),
        name:'DailyReportReport',
        meta:{title:'导检单',activeMenu:'/bre/DailyReport'},
      },
      {
        path: 'viewReport',
        component: () => import('@/views/jmreport/jmreport/view'),
        name:'DailyReportReport',
        meta:{title:'体检报告',activeMenu:'/bre/viewReport'},
      },
      {
        path: 'settlement',
        component: () => import('@/views/jmreport/jmreport/settlement'),
        name:'DailyReportReport',
        meta:{title:'个人结账单',activeMenu:'/bre/settlement'},
      },
      {
        path: 'charge',
        component: () => import('@/views/jmreport/jmreport/charge'),
        name:'DailyReportReport',
        meta:{title:'收款小票',activeMenu:'/bre/charge'},
      },
      {
        path: 'refund',
        component: () => import('@/views/jmreport/jmreport/refund'),
        name:'DailyReportReport',
        meta:{title:'退款小票',activeMenu:'/bre/refund'},
      },
      {
        path: 'invoice',
        component: () => import('@/views/jmreport/jmreport/invoice'),
        name:'DailyReportReport',
        meta:{title:'发票',activeMenu:'/bre/invoice'},
      },
      {
        path: 'groupReport',
        component: () => import('@/views/jmreport/jmreport/groupReport'),
        name:'DailyReportReport',
        meta:{title:'团队报告',activeMenu:'/bre/groupReport '},
      },
    ]
  },
  // {
  //   path: '/report',
  //   component: Layout,
  //   hidden: true,
  //   permissions: ['tool:gen:edit'],
  //   // permissions: ['bre:DailyReport:list'],
  //   children: [
  //     {
  //       path: 'breDailyReport',
  //       component: () => import('@/views/jmreport/jmreport/view'),
  //       name:'DailyReportReport',
  //       meta:{title:'导检单',activeMenu:'/bre/DailyReport'},
  //     },
  //     {
  //       path: 'viewReport',
  //       component: () => import('@/views/jmreport/jmreport/view'),
  //       name:'DailyReportReport',
  //       meta:{title:'体检报告',activeMenu:'/bre/viewReport'},
  //     },
  //     {
  //       path: 'settlement',
  //       component: () => import('@/views/jmreport/jmreport/settlement'),
  //       name:'DailyReportReport',
  //       meta:{title:'个人结账单',activeMenu:'/bre/settlement'},
  //     },
  //     {
  //       path: 'charge',
  //       component: () => import('@/views/jmreport/jmreport/charge'),
  //       name:'DailyReportReport',
  //       meta:{title:'收款小票',activeMenu:'/bre/charge'},
  //     },
  //     {
  //       path: 'refund',
  //       component: () => import('@/views/jmreport/jmreport/refund'),
  //       name:'DailyReportReport',
  //       meta:{title:'退款小票',activeMenu:'/bre/refund'},
  //     },
  //     {
  //       path: 'invoice',
  //       component: () => import('@/views/jmreport/jmreport/invoice'),
  //       name:'DailyReportReport',
  //       meta:{title:'发票',activeMenu:'/bre/invoice'},
  //     },
  //     {
  //       path: 'groupReport',
  //       component: () => import('@/views/jmreport/jmreport/groupReport'),
  //       name:'DailyReportReport',
  //       meta:{title:'团队报告',activeMenu:'/bre/groupReport '},
  //     },
  //   ]
  // },
  {
    path: '/system',
    component: Layout,
    hidden: true,
    permissions: ['system:user:edit'],
    children: [
      {
        path: 'about',
        component: () => import('@/views/hosp/about/index'),
        name: 'AuthRole',
        meta: { title: '日结查询' }
      }
    ]
  },
  // {
  //   path: '/system',
  //   component: Layout,
  //   hidden: true,
  //   permissions: ['system:user:edit'],
  //   children: [
  //     {
  //       path: 'about',
  //       component: () => import('@/views/hosp/about/index'),
  //       name: 'AuthRole',
  //       meta: { title: '日结查询' }
  //     }
  //   ]
  // },
  {
    path: '/hosp',
    component: Layout,
src/utils/devicePixelRatio.js
New file
@@ -0,0 +1,44 @@
class devicePixelRatio {
    /* 获取系统类型 */
    getSystem() {
      const agent = navigator.userAgent.toLowerCase();
      const isMac = /macintosh|mac os x/i.test(navigator.userAgent);
      if (isMac) return false;
      // 目前只针对 win 处理,其它系统暂无该情况,需要则继续在此添加即可
      if (agent.indexOf("windows") >= 0) return true;
    }
    /* 监听方法兼容写法 */
    addHandler(element, type, handler) {
      if (element.addEventListener) {
        element.addEventListener(type, handler, false);
      } else if (element.attachEvent) {
        element.attachEvent("on" + type, handler);
      } else {
        element["on" + type] = handler;
      }
    }
    /* 校正浏览器缩放比例 */
    correct() {
      // 页面devicePixelRatio(设备像素比例)变化后,计算页面body标签zoom修改其大小,来抵消devicePixelRatio带来的变化
      document.getElementsByTagName("body")[0].style.zoom =
        1 / window.devicePixelRatio;
    }
    /* 监听页面缩放 */
    watch() {
      const that = this;
      // 注意: 这个方法是解决全局有两个window.resize
      that.addHandler(window, "resize", function () {
        that.correct(); // 重新校正浏览器缩放比例
      });
    }
    /* 初始化页面比例 */
    init() {
      const that = this;
      // 判断设备,只在 win 系统下校正浏览器缩放比例
      if (that.getSystem()) {
        that.correct(); // 校正浏览器缩放比例
        that.watch(); // 监听页面缩放
      }
    }
  }
  export default devicePixelRatio;
src/views/hosp/Summary/index.vue
@@ -25,7 +25,7 @@
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button type="primary" size="mini" :disabled="single" @click="handleUpdate"
          v-hasPermi="['hosp:water:edit']">汇总</el-button>
          >汇总</el-button>
      </el-col>
    </el-row>
    <el-table style="width: 80%" :data="list"  border max-height="720px" @selection-change="handleSelect">
src/views/hosp/Sumrecord/index.vue
@@ -24,11 +24,11 @@
        <el-row :gutter="10" class="mb8">
            <el-col :span="1.5">
                <el-button icon="el-icon-edit" size="mini" @click="handleDelete"
                    v-hasPermi="['hosp:water:edit']" :disabled="single">撤销</el-button>
                    :disabled="single">撤销</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button icon="el-icon-edit" size="mini" @click="handledocument"
                    v-hasPermi="['hosp:water:edit']" :disabled="single">补打单据</el-button>
                    :disabled="single">补打单据</el-button>
            </el-col>
        </el-row>
src/views/hosp/about/index.vue
@@ -19,11 +19,11 @@
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button icon="el-icon-edit" size="mini" @click="handleDelete" v-hasPermi="['hosp:water:edit']">撤销</el-button>
        <el-button icon="el-icon-edit" size="mini" @click="handleDelete" >撤销</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button icon="el-icon-edit" size="mini" @click="handledocument"
          v-hasPermi="['hosp:water:edit']">补打单据</el-button>
         >补打单据</el-button>
      </el-col>
    </el-row>
src/views/hosp/fuzhen/index.vue
@@ -723,7 +723,7 @@
      }
      /** 查询部门下拉树结构 */
      projectGetList().then((response) => {
        this.Treedata = response.data;
        this.Treedata = response.data.list;
      });
      this.Projectopen = true;
      this.title = "补录项目";
src/views/hosp/order/index.vue
@@ -1127,7 +1127,7 @@
      }
      /** 查询部门下拉树结构 */
      projectGetList().then((response) => {
        this.Treedata = response.data;
        this.Treedata = response.data.list;
      });
      this.Projectopen1 = true;
      this.title = "补录项目";
src/views/hosp/settlement/index.vue
@@ -12,13 +12,13 @@
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-edit" size="mini" @click="handleUpdate" v-hasPermi="['hosp:water:edit']">统计</el-button>
        <el-button type="primary" icon="el-icon-edit" size="mini" @click="handleUpdate">统计</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-check" size="mini" @click="handlesettle" :disabled="discode === 200 ? true : false" v-hasPermi="['hosp:water:export']" >结账</el-button>
        <el-button type="primary" icon="el-icon-check" size="mini" @click="handlesettle" :disabled="discode === 200 ? true : false"  >结账</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" size="mini" v-hasPermi="['hosp:water:remove']" @click="handleabout">日结查询</el-button>
        <el-button type="primary" size="mini"  @click="handleabout">日结查询</el-button>
      </el-col>
    </el-row>
src/views/jmreport/jmreport/charge.vue
@@ -30,6 +30,7 @@
    };
  },
  created() {
    console.log(this.$route.query)
    //报表模板编号
    this.viewNum = this.$route.query.viewNum;
    //体检号
src/views/jmreport/kstj/index.vue
@@ -7,7 +7,7 @@
import {
  getToken
} from '@/utils/auth'
import { view } from "@/api/jmreport/jimu";
export default {
  name: "Ureport",
  data() {
@@ -15,10 +15,19 @@
      src: "",
      height: document.documentElement.clientHeight - 94.5 + "px;",
      loading: true,
      viewNum:"801589968083054592"
    };
  },
  created() {
    this.src = "https://ltpeis.xaltjdkj.cn:5011/ltkj-admin/jmreport/view/801589968083054592?token=Bearer " + getToken();
    view().then((res) => {
      this.src =
        res +
        "/" +
        this.viewNum +
        "?token=Bearer" +
        getToken();
    });
    // this.src = "http://192.168.0.99:8080/ltkj-admin/jmreport/view/801589968083054592?token=Bearer " + getToken();
  },
  mounted: function () {
src/views/jmreport/yctj/index.vue
@@ -7,7 +7,7 @@
import {
  getToken
} from '@/utils/auth'
import { view } from "@/api/jmreport/jimu";
export default {
  name: "Ureport",
  data() {
@@ -15,10 +15,19 @@
      src: "",
      height: document.documentElement.clientHeight - 94.5 + "px;",
      loading: true,
      viewNum:"815468234724306944",
    };
  },
  created() {
    this.src = "https://ltpeis.xaltjdkj.cn:5011/ltkj-admin/jmreport/view/815468234724306944?token=Bearer " + getToken();
    view().then((res) => {
      this.src =
        res +
        "/" +
        this.viewNum +
        "?token=Bearer" +
        getToken();
    });
    // this.src = "http://192.168.0.99:8080/ltkj-admin/jmreport/view/815468234724306944?token=Bearer " + getToken();
  },
  mounted: function () {
src/views/jmreport/ysgzltj/index.vue
@@ -7,7 +7,7 @@
import {
  getToken
} from '@/utils/auth'
import { view } from "@/api/jmreport/jimu";
export default {
  name: "Ureport",
  data() {
@@ -15,10 +15,19 @@
      src: "",
      height: document.documentElement.clientHeight - 94.5 + "px;",
      loading: true,
      viewNum:"803795472456839168"
    };
  },
  created() {
    this.src = "https://ltpeis.xaltjdkj.cn:5011/ltkj-admin/jmreport/view/803795472456839168?token=Bearer " + getToken();
    view().then((res) => {
      this.src =
        res +
        "/" +
        this.viewNum +
        "?token=Bearer" +
        getToken();
    });
    // this.src = "http://192.168.0.99:8080/ltkj-admin/jmreport/view/803795472456839168?token=Bearer " + getToken();
  },
  mounted: function () {
src/views/jmreport/zjtj/index.vue
@@ -7,7 +7,7 @@
import {
  getToken
} from '@/utils/auth'
import { view } from "@/api/jmreport/jimu";
export default {
  name: "Ureport",
  data() {
@@ -15,10 +15,19 @@
      src: "",
      height: document.documentElement.clientHeight - 94.5 + "px;",
      loading: true,
      viewNum:"801668607294271488"
    };
  },
  created() {
    this.src = "https://ltpeis.xaltjdkj.cn:5011/ltkj-admin/jmreport/view/801668607294271488?token=Bearer " + getToken();
    view().then((res) => {
      this.src =
        res +
        "/" +
        this.viewNum +
        "?token=Bearer" +
        getToken();
    });
    // this.src = "http://192.168.0.99:8080/ltkj-admin/jmreport/view/801668607294271488?token=Bearer " + getToken();
  },
  mounted: function () {
src/views/login.vue
@@ -151,8 +151,8 @@
    },
    hide() {
      this.loginForm.username = "10001";
      this.loginForm.password = "admin123";
      // this.loginForm.username = "10001";
      // this.loginForm.password = "admin123";
    },
    changetype() {
      this.pwdtype = this.pwdtype === 'password' ? 'text' : 'password'
src/views/reservation/reservations/index.vue
@@ -1173,7 +1173,7 @@
        /** 查询部门下拉树结构 */
        projectGetList().then((response) => {
          this.data = response.data;
          this.data = response.data.list;
          this.dXData = response.data;
          return;
        });
@@ -1272,7 +1272,7 @@
      /** 查询部门下拉树结构 */
      projectGetList().then((response) => {
        this.data = response.data;
        this.data = response.data.list;
        this.dXData = response.data;
        return;
      });
src/views/system/bill/index.vue
@@ -772,7 +772,7 @@
    /** 点击显示导检单报表*/ //lige    开始
    handleReport() {
      const tjNumber = this.report;
      const tjNumber = this.report[0];
      const viewNum = "792931586196398080";
      const params = { viewNum, tjNumber };
      hasReport(tjNumber).then((res) => {
@@ -929,7 +929,7 @@
      }
      /** 查询部门下拉树结构 */
      projectGetList().then((response) => {
        this.Treedata = response.data;
        this.Treedata = response.data.list;
      });
      this.Projectopen = true;
    },
src/views/system/examcharge/index.vue
@@ -90,21 +90,22 @@
                    <el-form-item label="联系电话" prop="phone">
                        <el-input v-model="form.phone" placeholder="请输入联系电话" />
                    </el-form-item>
                    <el-form-item label="体检项目" prop="tjPro">
                        <el-input ref="inputName" v-model="form.tjPro" placeholder="请输入体检项目" />
                    <!-- @focus="hadeltjpro" -->
                    <el-form-item label="体检项目" prop="tjProName">
                        <el-input ref="inputName" v-model="form.tjProName" placeholder="请输入体检项目" />
                    </el-form-item>
                    <el-form-item label="数量" prop="number">
                        <el-input ref="inputName" v-model="form.number" placeholder="请输入数量" />
                    </el-form-item>
                    <el-form-item label="应收金额" prop="ys">
                        <el-input v-model="form.ys" placeholder="金额" :disabled="true"></el-input>
                        <el-input v-model="form.ys" placeholder="金额"></el-input>
                    </el-form-item>
                    <el-form-item label="优惠折扣" prop="zk">
                    <el-form-item label="优惠" prop="zk">
                        <el-input-number v-model="form.zk" :precision="2" :step="0.1" :max="10" :min="1"
                            @change="numberChange" :disabled="isfalse"></el-input-number>
                            disabled></el-input-number>
                    </el-form-item>
                    <el-form-item label="实收金额" prop="ss">
                        <el-input v-model="form.ss" placeholder="实付">
                        <el-input v-model="form.ss" placeholder="实付" @input="numberChange">
                        </el-input>
                    </el-form-item>
                    <el-form-item label="付款类型" prop="type">
@@ -125,8 +126,7 @@
            <el-col :span="17" :xs="24" style="padding: 0 10px;">
                <el-row :gutter="10" class="mb8">
                    <el-col :span="1.5">
                        <el-form :inline="true" ref="form" :model="queryParams" class="demo-form-inline" label-width="80px"
                            :rules="rules">
                        <el-form :inline="true" ref="form" :model="queryParams" class="demo-form-inline" label-width="80px">
                            <el-form-item label="姓名" prop="name">
                                <el-input v-model="queryParams.name" placeholder="请输入姓名" />
                            </el-form-item>
@@ -136,14 +136,13 @@
                        </el-form>
                    </el-col>
                    <el-col :span="1.5">
                        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleUpdate"
                            v-hasPermi="['hosp:org:edit']">查询</el-button>
                        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleUpdate">查询</el-button>
                    </el-col>
                </el-row>
                <div style="margin-bottom: 10px;">
                    <el-radio-group v-model="queryParams.type" @input="handleUpdate" style="margin-left: 30px">
                        <el-radio-button label="1">收费记录</el-radio-button>
                        <el-radio-button label="2">退费记录</el-radio-button>
                        <!-- <el-radio-button label="2">退费记录</el-radio-button> -->
                    </el-radio-group>
                </div>
@@ -155,31 +154,45 @@
                    <el-table-column label="手机号" align="center" prop="customer.cusPhone" width="110px"
                        :show-overflow-tooltip="true"></el-table-column>
                    <el-table-column label="订单流水号" align="center" prop="waterId" width="180px" />
                    <el-table-column label="体检项目" align="center" prop="proname" width="90px"/>
                    <el-table-column label="体检项目" align="center" prop="tjProName" width="120px" />
                    <el-table-column label="应收金额" align="center" prop="copeWith" width="90px" />
                    <el-table-column label="实收金额" align="center" prop="paidIn" width="90px" />
                    <el-table-column label="付款类型" align="center" prop="payType" width="90px">
                    <el-table-column label="实收金额" align="center" prop="paidIn" width="80px" />
                    <el-table-column label="付款类型" align="center" prop="payType" width="80px">
                        <template slot-scope="scope">
                            <dict-tag :options="dict.type.dict_pay_type" :value="scope.row.payType" />
                        </template>
                    </el-table-column>
                    <el-table-column label="收费员" align="center" prop="updateBy" width="100px" />
                    <el-table-column label="收退时间" align="center" prop="updateTime" />
                    <el-table-column fixed="right" label="操作" align="center" class-name="small-padding " width="120px"
                    <el-table-column fixed="right" label="操作" align="center" class-name="small-padding " width="100px"
                        v-if="queryParams.type == '1'">
                        <template slot-scope="scope">
                            <el-button size="mini" type="text" @click="handlerefund(scope.row)"
                                v-hasPermi="['system:dept:edit']" v-if="scope.row.remarks != '已退费'">退费</el-button>
                            <el-button size="mini" type="text" v-hasPermi="['system:dept:edit']"
                                v-if="scope.row.remarks == '已退费'">{{ scope.row.remarks }}</el-button>
                            <el-button size="mini" type="text" v-hasPermi="['system:dept:edit']"
                                v-if="scope.row.remarks != '已退费'" @click="receipt(scope.row)">补打小票</el-button>
                            <!-- <el-button size="mini" type="text" @click="handlerefund(scope.row)"
                                v-if="scope.row.remarks != '已退费'">退费</el-button> -->
                            <el-button size="mini" type="text" v-if="scope.row.remarks == '已退费'">{{ scope.row.remarks
                            }}</el-button>
                            <el-button size="mini" type="text" v-if="scope.row.remarks != '已退费'"
                                @click="receipt(scope.row)">补打</el-button>
                        </template>
                    </el-table-column>
                </el-table>
            </el-col>
        </el-row>
        <!-- 添加补录项目 -->
        <el-dialog :title="title" :visible.sync="Projectopen1" width="980px" style="height: 860px" append-to-body>
            <el-row type="flex" class="row-bg" justify="space-around">
                <el-col :span="6">
                    <div class="tab3">
                        <div class="outside1">
                            <el-tree ref="tree" :data="Treedata" show-checkbox node-key="proId" check-strictly
                                :props="defaultProps" @check-change="handleCurrentChecked">
                            </el-tree>
                        </div>
                    </div>
                </el-col>
            </el-row>
        </el-dialog>
        <div style="
              position: absolute;
              bottom: 100px;
@@ -221,6 +234,7 @@
<script>
import { getTjPrice, addOrderAndDetail, tjRefund, getFlowingWaterList, getPrintSetUp } from "@/api/system/examcharge";
import { getInfo } from "@/api/login";
import { projectGetList } from "@/api/system/tijian";
import printJS from "print-js";
export default {
    dicts: ["dict_pay_type"],
@@ -231,16 +245,33 @@
            tjNumbers:"",
            // 遮罩层
            loading: false,
            Projectopen1: false,
            // 弹出层标题
            title: "",
            disabled: "",
            iconData: "el-icon-arrow-down",
            DataList: [],
            tableList: [],
            list: [],
            Treedata: [],
            defaultProps: {
                children: "tjProjectList",
                label: "proName",
                disabled: function (data, node) {
                    if (data.tjProjectList && data.tjProjectList.length > 0) {
                        return false
                    }
                    else {
                        return true
                    }
                }
            },
            // 选中数组
            ids: [],
            getInfodis: "",
            waterId: "",
            isfalse: false,
            toggleSearchStatus: "0",
            queryParams: {
                name: "",
@@ -249,7 +280,7 @@
            },
            formIn: {
                name: "",
                tjPro: "体检费",
                tjPro: "",
                phone: "",
                number: 1,
                ys: "0",
@@ -264,11 +295,12 @@
            // 表单参数
            form: {
                name: "",
                tjPro: "体检费",
                tjPro: "",
                tjProName: "体检费",
                phone: "",
                number: 1,
                ys: "0",
                ss: "0",
                ys: 0,
                ss: 0,
                type: "0",
                zk: 10,
@@ -374,11 +406,12 @@
        resetQuery() {
            this.form = {
                name: null,
                tjPro: "体检费",
                tjPro: null,
                phone: null,
                tjProName: "体检费",
                number: 1,
                ys: "0",
                ss: "0",
                ys: 0.00,
                ss: 0.00,
                type: "0",
                zk: 10,
            };
@@ -392,29 +425,55 @@
        handleUpdate() {
            getFlowingWaterList(this.queryParams).then(res => {
                this.tableList = res.data
                this.tableList.forEach(element => {
                    element.proname = "体检费"
                });
            })
        },
        hadeltjpro() {
            /** 查询部门下拉树结构 */
            projectGetList().then((response) => {
                this.Treedata = response.data.list;
            });
            this.Projectopen1 = true;
            this.title = "项目列表";
        },
        // 点击获取每个树节点
        handleCurrentChecked(data, checked, checkedNodes) {
            console.log(data, checked)
            // this.form.tjPro = "",
            //     this.form.ys = 0
            if (checked) {
                // this.menuOptions.id = data.id
                this.$refs.tree.setCheckedKeys([data.proId], true)
            } else {
                // this.menuOptions.id = null
            }
            if (checked == true) {
                this.form.tjPro = data.proId
                this.form.tjProName = data.proName
                const r = /^\+?[0-9][0-9]*$/; //正整数(可以0打头)
                if (r.test(data.proPrice)) {
                    this.form.ys = data.proPrice + ".00";
                } else {
                    this.form.ys = data.proPrice
                }
            }
            this.Projectopen1 = false;
        },
        // 折扣
        numberChange(currentValue, oldValue) {
            this.form.zk = currentValue;
            this.form.ss = (
                this.form.ys *
                (this.form.zk / 10)
            ).toFixed(2);
            const r = /^\+?[0-9][0-9]*$/; //正整数(可以以打头)
            //const r=/^\+?[1-9][0-9]*$/;//正整数
            if (r.test(this.form.ss)) {
                this.form.ss = this.form.ss + ".00";
            }
        numberChange() {
            let price = (this.form.ss / this.form.ys) * 10
            this.form.zk = price.toFixed(2)
        },
        receipt(row) {
            getPrintSetUp().then(res => {
                if (res.msg == "0") {
            this.formIn = {
                name: row.customer.cusName,
                tjPro: "体检费",
                        tjPro: row.tjProName,
                phone: row.customer.cusPhone,
                ys: row.copeWith,
                ss: row.paidIn,
@@ -434,6 +493,17 @@
                    style,
                });
            });
                } else {
                    const tjnumber = row.tjNumber;
                    const viewNum = "809623418249637888";
                    const params = { viewNum, tjnumber };
                    this.$tab.openPage("个人发票", "/report/charge", params);
                }
                this.resetQuery()
                this.handleUpdate()
                this.getList()
            })
        },
        // 收费
@@ -475,7 +545,7 @@
                    }
                })
            } else {
                this.$modal.msgError("请填写带星号信息");
                this.$modal.msgError("请填写姓名");
            }
        },
src/views/system/indrefund/index.vue
New file
@@ -0,0 +1,456 @@
<template>
    <div class="app-container">
        <el-row :gutter="10" class="mb8">
            <el-col :span="1.5">
                <el-form :inline="true" ref="form" :model="queryParams" class="demo-form-inline" label-width="80px">
                    <el-form-item label="姓名" prop="name">
                        <el-input v-model="queryParams.name" placeholder="请输入姓名" />
                    </el-form-item>
                    <el-form-item label="联系电话" prop="phone">
                        <el-input v-model="queryParams.phone" placeholder="请输入联系电话" />
                    </el-form-item>
                </el-form>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-search" size="mini" @click="handleUpdate">查询</el-button>
            </el-col>
        </el-row>
        <div style="margin-bottom: 10px;">
            <el-radio-group v-model="type" @input="handleUpdate">
                <el-radio-button label="1">收费记录</el-radio-button>
                <el-radio-button label="2">退费记录</el-radio-button>
            </el-radio-group>
        </div>
        <template>
            <el-table v-loading="loading" :data="tableList" @selection-change="handleSelect" border max-height="720px"
                :row-style="changRed">
                <el-table-column type="selection" width="55" align="center" />
                <el-table-column label="姓名" align="center" prop="customer.cusName" width="90px" />
                <el-table-column label="手机号" align="center" prop="customer.cusPhone" width="110px"
                    :show-overflow-tooltip="true"></el-table-column>
                <el-table-column label="订单流水号" align="center" prop="waterId" width="180px" />
                <el-table-column label="体检项目" align="center" prop="tjProName" width="120px" />
                <el-table-column label="应收金额" align="center" prop="copeWith" width="90px" />
                <el-table-column label="实收金额" align="center" prop="paidIn" width="80px" />
                <el-table-column label="付款类型" align="center" prop="payType" width="80px">
                    <template slot-scope="scope">
                        <dict-tag :options="dict.type.dict_pay_type" :value="scope.row.payType" />
                    </template>
                </el-table-column>
                <el-table-column label="收费员" align="center" prop="updateBy" width="100px" />
                <el-table-column label="收退时间" align="center" prop="updateTime" />
                <el-table-column fixed="right" label="操作" align="center" class-name="small-padding " width="100px"
                    v-if="queryParams.type == '1'">
                    <template slot-scope="scope">
                        <el-button size="mini" type="text" @click="handlerefund(scope.row)"
                            v-if="scope.row.remarks != '已退费'">退费</el-button>
                        <el-button size="mini" type="text" v-if="scope.row.remarks == '已退费'">{{ scope.row.remarks
                        }}</el-button>
                        <el-button size="mini" type="text" v-if="scope.row.remarks != '已退费'"
                            @click="receipt(scope.row)">补打</el-button>
                    </template>
                </el-table-column>
            </el-table>
        </template>
        <div style="
              position: absolute;
              bottom: 100px;
              width: 360px;
              display: none;
            ">
            <div id="printBill" style="width: 280px;font-size: 1px;" ref="printContent">
                <div style="font-size: 1px;">
                    <div style="text-align: center;">
                        <h3>{{ hospName }}小票</h3>
                    </div>
                    <div style="margin-top: 4px;">
                        <div>
                            姓名:{{ formIn.name }}
                        </div>
                        <div>
                            电话:{{ formIn.phone }}
                        </div>
                        <div>
                            体检项目:{{ formIn.tjPro }}
                        </div>
                        <div>
                            折扣:{{ formIn.zk + "%" }}
                        </div>
                        <div>
                            实收金额:{{ formIn.ss }}元
                        </div>
                        <div>
                            收费时间:{{ currentDate + " " + currentTime }}
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>
<script>
import { getTjPrice, addOrderAndDetail, tjRefund, getFlowingWaterList, getPrintSetUp } from "@/api/system/examcharge";
import { getInfo } from "@/api/login";
import { projectGetList } from "@/api/system/tijian";
import printJS from "print-js";
export default {
    dicts: ["dict_pay_type"],
    name: "Examcharge",
    data() {
        return {
            tjNumbers: "",
            // 遮罩层
            loading: false,
            Projectopen1: false,
            // 弹出层标题
            title: "",
            disabled: "",
            iconData: "el-icon-arrow-down",
            DataList: [],
            tableList: [],
            list: [],
            Treedata: [],
            defaultProps: {
                children: "tjProjectList",
                label: "proName",
                disabled: function (data, node) {
                    if (data.tjProjectList && data.tjProjectList.length > 0) {
                        return false
                    }
                    else {
                        return true
                    }
                }
            },
            // 选中数组
            ids: [],
            getInfodis: "",
            waterId: "",
            type: "1",
            toggleSearchStatus: "0",
            queryParams: {
                name: "",
                phone: "",
                type: ""
            },
            formIn: {
                name: "",
                tjPro: "",
                phone: "",
                number: 1,
                ys: "0",
                ss: "0",
                type: "0",
                zk: 10,
            },
            hospName: "",
            currentDate: "",
            currentTime: "",
            // 表单参数
            form: {
                name: "",
                tjPro: "",
                tjProName: "体检费",
                phone: "",
                number: 1,
                ys: 0,
                ss: 0,
                type: "0",
                zk: 10,
            },
            // 表单校验
            rules: {
                name: [{ required: true, message: "姓名不能为空", trigger: "change" }],
                tjPro: [
                    { required: true, message: "体检项目不能为空", trigger: "change" },
                ],
                type: [
                    { required: true, message: "付款类型不能为空", trigger: "blur" },
                ],
            },
        };
    },
    created() {
        this.getList();
        this.handleUpdate();
        this.getCurrentDateTime()
        this.startTimer()
    },
    methods: {
        getCurrentDateTime() {
            const currentDate = new Date()
            // 格式化日期:YYYY-MM-DD
            const year = currentDate.getFullYear()
            const month = String(currentDate.getMonth() + 1).padStart(2, '0')
            const day = String(currentDate.getDate()).padStart(2, '0')
            this.currentDate = `${year}-${month}-${day}`
            // 格式化时间:HH:mm:ss
            const hours = String(currentDate.getHours()).padStart(2, '0')
            const minutes = String(currentDate.getMinutes()).padStart(2, '0')
            const seconds = String(currentDate.getSeconds()).padStart(2, '0')
            this.currentTime = `${hours}:${minutes}:${seconds}`
        },
        startTimer() {
            this.timer = setInterval(() => {
                this.getCurrentDateTime()
            }, 1000) //每秒钟更新一次
        },
        beforeDestroy() {
            clearInterval(this.timer)
        },//清除定时器,以避免内存泄露。
        getList() {
            getTjPrice().then(res => {
                if (res.data) {
                    const r = /^\+?[0-9][0-9]*$/; //正整数(可以0打头)
                    if (r.test(res.data)) {
                        this.form.ys = res.data + ".00";
                    } else {
                        this.form.ys = res.data
                    }
                    this.form.ss = this.form.ys
                }
            })
            getInfo(this.queryParams).then((response) => {
                this.hospName = response.hospName;
            });
        },
        changRed({ row }) {
            if (row.remarks == '已退费') { // 变颜色的条件
                return {
                    backgroundColor: "#9cdcfe"  // 这个return的就是样式 可以是color 也可以是backgroundColor
                }
            }
        },
        handleToggleSearch() {
            if (this.toggleSearchStatus == "0") {
                this.toggleSearchStatus = "1"
                this.iconData = "el-icon-arrow-up"
            } else {
                this.toggleSearchStatus = "0"
                this.iconData = "el-icon-arrow-down"
            }
        },
        //重置按钮
        resetQuery() {
            this.form = {
                name: null,
                tjPro: null,
                phone: null,
                tjProName: "体检费",
                number: 1,
                ys: 0.00,
                ss: 0.00,
                type: "0",
                zk: 10,
            };
            this.resetForm("form");
        },
        // 表格单选
        handleSelect(selection, val) {
            this.DataList = this.$refs.multipleTable.selection;
        },
        handleUpdate() {
            if (this.type == 1) {
                this.queryParams.type = 4
                getFlowingWaterList(this.queryParams).then(res => {
                    this.tableList = res.data
                })
            }else{
                this.queryParams.type = this.type
                getFlowingWaterList(this.queryParams).then(res => {
                    this.tableList = res.data
                })
            }
        },
        hadeltjpro() {
            /** 查询部门下拉树结构 */
            projectGetList().then((response) => {
                this.Treedata = response.data.list;
            });
            this.Projectopen1 = true;
            this.title = "项目列表";
        },
        // 点击获取每个树节点
        handleCurrentChecked(data, checked, checkedNodes) {
            console.log(data, checked)
            // this.form.tjPro = "",
            //     this.form.ys = 0
            if (checked) {
                // this.menuOptions.id = data.id
                this.$refs.tree.setCheckedKeys([data.proId], true)
            } else {
                // this.menuOptions.id = null
            }
            if (checked == true) {
                this.form.tjPro = data.proId
                this.form.tjProName = data.proName
                const r = /^\+?[0-9][0-9]*$/; //正整数(可以0打头)
                if (r.test(data.proPrice)) {
                    this.form.ys = data.proPrice + ".00";
                } else {
                    this.form.ys = data.proPrice
                }
            }
            this.Projectopen1 = false;
        },
        // 折扣
        numberChange() {
            let price = (this.form.ss / this.form.ys) * 10
            this.form.zk = price.toFixed(2)
        },
        receipt(row) {
            getPrintSetUp().then(res => {
                if (res.msg == "0") {
                    this.formIn = {
                        name: row.customer.cusName,
                        tjPro: row.tjProName,
                        phone: row.customer.cusPhone,
                        ys: row.copeWith,
                        ss: row.paidIn,
                        zk: row.discount,
                    }
                    this.$nextTick(() => {
                        const style =
                            "@media print { @page{margin:0 10mm,size:4mm 6mm;}};"; //打印时去掉眉页眉尾
                        printJS({
                            printable: "printBill", // 标签元素id
                            noPrint: ".noPrint",
                            type: 'html',
                            header: "",
                            targetStyles: ["*"],
                            maxWidth: "800",
                            scanStyles: true, //打印必须加上,不然页面上的css样式无效
                            style,
                        });
                    });
                } else {
                    const tjnumber = row.tjNumber;
                    const viewNum = "809623418249637888";
                    const params = { viewNum, tjnumber };
                    this.$tab.openPage("个人发票", "/report/charge", params);
                }
                this.resetQuery()
                this.handleUpdate()
                this.getList()
            })
        },
        // 收费
        SubmitEvent() {
            if (this.form.name) {
                this.formIn = this.form
                addOrderAndDetail(this.form).then(res => {
                    if (res.code == 200) {
                        this.tjNumbers = res.msg
                        this.$modal.msgSuccess("收费成功");
                        getPrintSetUp().then(res => {
                            if (res.msg == "0") {
                                this.$nextTick(() => {
                                    const style =
                                        "@media print { @page{margin:0 10mm,size:4mm 6mm;}};"; //打印时去掉眉页眉尾
                                    printJS({
                                        printable: "printBill", // 标签元素id
                                        noPrint: ".noPrint",
                                        type: 'html',
                                        header: "",
                                        targetStyles: ["*"],
                                        maxWidth: "800",
                                        scanStyles: true, //打印必须加上,不然页面上的css样式无效
                                        style,
                                    });
                                });
                            } else {
                                const tjnumber = this.tjNumbers;
                                const viewNum = "809623418249637888";
                                const params = { viewNum, tjnumber };
                                this.$tab.openPage("个人发票", "/report/charge", params);
                            }
                            this.resetQuery()
                            this.handleUpdate()
                            this.getList()
                        })
                    }
                })
            } else {
                this.$modal.msgError("请填写姓名");
            }
        },
        handlerefund(row) {
            this.$confirm('您确定要退费吗?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(() => {
                let data = {
                    waterId: row.waterId
                }
                tjRefund(data).then(res => {
                    if (res.code == 200) {
                        this.$modal.msgSuccess("退费成功");
                        this.handleUpdate()
                    }
                })
            }).catch(() => {
                this.$message({
                    type: 'info',
                    message: '已取消退费'
                });
            });
        }
    },
};
</script>
<style>
#sig .el-table__header-wrapper .el-checkbox {
    display: none;
}
</style>
src/views/system/invoice/index.vue
@@ -663,6 +663,7 @@
      const tjnumber = this.tjNumbers;
      const viewNum = this.mobanId;
      const params = { viewNum, tjnumber };
      // this.$router.push({path:'/report/charge',query: params})
      this.$tab.openPage("个人发票", "/report/charge", params);
      let data = {
        tjNum: this.tjNumbers,
src/views/system/register/index.vue
@@ -588,7 +588,7 @@
      }
      /** 查询部门下拉树结构 */
      projectGetList().then((response) => {
        this.Treedata = response.data;
        this.Treedata = response.data.list;
      });
      this.Projectopen = true;
    },
src/views/system/user/index.vue
@@ -234,7 +234,8 @@
          </el-form-item>
          <el-form-item label="所在医院" prop="hospId">
            <el-select v-model="form.hospId" placeholder="请选择所在医院" clearable style="width: 200px" filterable  @change="sendhospName">
            <el-select v-model="form.hospId" placeholder="请选择所在医院" clearable style="width: 200px" filterable
              @change="sendhospName">
              <el-option v-for="dict in hospList" :key="dict.hospAreaName" :label="dict.hospAreaName"
                :value="dict.hospAreaId" />
            </el-select>
@@ -265,8 +266,8 @@
            <el-input v-model="form.medicalId" placeholder="请输入医保编码" style="width: 200px" />
          </el-form-item>
          <el-form-item label="优惠折扣">
            <el-input-number ref="inputNumber" style="width: 200px" v-model="form.discount" :precision="2"
              :step="0.1" :max="10" :min="1" @change="numberChange"></el-input-number>
            <el-input-number ref="inputNumber" style="width: 200px" v-model="form.discount" :precision="2" :step="0.1"
              :max="10" :min="1" @change="numberChange"></el-input-number>
          </el-form-item>
          <el-form-item label="现住址" prop="liveAddr">
            <el-input v-model="form.userInfo.liveAddr" placeholder="请输入现居住地址" style="width: 440px" />
@@ -656,11 +657,7 @@
    </el-dialog>
    <!-- 重置密码对话框 -->
    <el-dialog
      title="提示"
      :visible.sync="dialogVisible1"
      width="30%"
      :before-close="handleClose">
    <el-dialog title="提示" :visible.sync="dialogVisible1" width="30%" :before-close="handleClose">
      <el-form :rules="rules1">
        <span>请输入“{{row.userName}}”的新密码</span>
        <el-form-item prop="password">
@@ -671,7 +668,7 @@
      </el-form>
      
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button @click="dialogVisible1 = false">取 消</el-button>
        <el-button type="primary" @click="tijiao">确 定</el-button>
      </span>
    </el-dialog>
@@ -864,15 +861,15 @@
        ],
      },
      rules1: {
        password: [
          { required: true, message: "用户密码不能为空", trigger: "blur" },
          {
            min: 5,
            max: 20,
            message: "用户密码长度必须介于 5 和 20 之间",
            trigger: "blur",
          },
        ],
        // password: [
        //   { required: true, message: "用户密码不能为空", trigger: "blur" },
        //   {
        //     min: 5,
        //     max: 20,
        //     message: "用户密码长度必须介于 5 和 20 之间",
        //     trigger: "blur",
        //   },
        // ],
      },
    };
  },
@@ -1143,6 +1140,7 @@
      //   .catch(() => { });
    },
    tijiao(){
      if (this.password) {
      let data = {
        password:this.password,
        userId:this.row.userId,
@@ -1153,6 +1151,10 @@
          this.dialogVisible1 = false;
        }
      })
      }else{
        this.$modal.msgError("用户名密码不能为空");
      }
    },
    /** 分配角色操作 */
    handleAuthRole: function (row) {
vue.config.js
@@ -36,6 +36,7 @@
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        target: `http://192.168.0.101:5011`,
        // target: `http://192.168.0.99:8080/ltkj-admin`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''