qymljy 2 năm trước cách đây
mục cha
commit
0116445d34

+ 2 - 2
node_modules/.vite/deps/@ant-design_icons-vue.js

@@ -57,10 +57,10 @@ import {
   svgBaseProps,
   useInsertStyles,
   warning
-} from "./chunk-HUU76VBX.js";
+} from "./chunk-5XDXAD5U.js";
 import {
   createVNode
-} from "./chunk-3NMN3MUW.js";
+} from "./chunk-IDMHQ7FM.js";
 import "./chunk-4EOJPDL2.js";
 
 // node_modules/@ant-design/icons-svg/es/asn/AccountBookFilled.js

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
node_modules/.vite/deps/@ant-design_icons-vue.js.map


+ 61 - 61
node_modules/.vite/deps/_metadata.json

@@ -1,113 +1,113 @@
 {
-  "hash": "301720d8",
-  "browserHash": "3abbfc45",
+  "hash": "bb98c671",
+  "browserHash": "8cd6e6df",
   "optimized": {
-    "vue": {
-      "src": "../../vue/dist/vue.runtime.esm-bundler.js",
-      "file": "vue.js",
-      "fileHash": "18c17cbb",
+    "@ant-design/icons-vue": {
+      "src": "../../@ant-design/icons-vue/es/index.js",
+      "file": "@ant-design_icons-vue.js",
+      "fileHash": "076b4510",
       "needsInterop": false
     },
     "ant-design-vue": {
       "src": "../../ant-design-vue/es/index.js",
       "file": "ant-design-vue.js",
-      "fileHash": "929c27b4",
-      "needsInterop": false
-    },
-    "axios": {
-      "src": "../../axios/index.js",
-      "file": "axios.js",
-      "fileHash": "dd624abc",
-      "needsInterop": false
-    },
-    "vue-router": {
-      "src": "../../vue-router/dist/vue-router.mjs",
-      "file": "vue-router.js",
-      "fileHash": "d781e352",
+      "fileHash": "5483ee6b",
       "needsInterop": false
     },
     "ant-design-vue/es/locale/zh_CN": {
       "src": "../../ant-design-vue/es/locale/zh_CN.js",
       "file": "ant-design-vue_es_locale_zh_CN.js",
-      "fileHash": "fac8aed7",
+      "fileHash": "3900ed9b",
+      "needsInterop": false
+    },
+    "axios": {
+      "src": "../../axios/index.js",
+      "file": "axios.js",
+      "fileHash": "4cb0738e",
       "needsInterop": false
     },
     "dayjs": {
       "src": "../../dayjs/dayjs.min.js",
       "file": "dayjs.js",
-      "fileHash": "ff2d339c",
+      "fileHash": "5b0f6e43",
       "needsInterop": true
     },
     "dayjs/locale/zh-cn": {
       "src": "../../dayjs/locale/zh-cn.js",
       "file": "dayjs_locale_zh-cn.js",
-      "fileHash": "c806ad5f",
+      "fileHash": "9d263560",
       "needsInterop": true
     },
-    "pinia": {
-      "src": "../../pinia/dist/pinia.mjs",
-      "file": "pinia.js",
-      "fileHash": "899103b1",
-      "needsInterop": false
-    },
-    "pinia-plugin-persist": {
-      "src": "../../pinia-plugin-persist/dist/pinia-persist.es.js",
-      "file": "pinia-plugin-persist.js",
-      "fileHash": "e1042de9",
-      "needsInterop": false
-    },
-    "mathjs": {
-      "src": "../../mathjs/lib/esm/index.js",
-      "file": "mathjs.js",
-      "fileHash": "e6af1a23",
-      "needsInterop": false
-    },
     "js-md5": {
       "src": "../../js-md5/src/md5.js",
       "file": "js-md5.js",
-      "fileHash": "158203fc",
+      "fileHash": "f83a1951",
       "needsInterop": true
     },
     "less": {
       "src": "../../less/dist/less.js",
       "file": "less.js",
-      "fileHash": "65e2ff47",
+      "fileHash": "9b48bf60",
       "needsInterop": true
     },
-    "@ant-design/icons-vue": {
-      "src": "../../@ant-design/icons-vue/es/index.js",
-      "file": "@ant-design_icons-vue.js",
-      "fileHash": "fe1ed01c",
+    "mathjs": {
+      "src": "../../mathjs/lib/esm/index.js",
+      "file": "mathjs.js",
+      "fileHash": "7ae83dc0",
+      "needsInterop": false
+    },
+    "pinia": {
+      "src": "../../pinia/dist/pinia.mjs",
+      "file": "pinia.js",
+      "fileHash": "b6bbe2bd",
+      "needsInterop": false
+    },
+    "pinia-plugin-persist": {
+      "src": "../../pinia-plugin-persist/dist/pinia-persist.es.js",
+      "file": "pinia-plugin-persist.js",
+      "fileHash": "0f76ef80",
       "needsInterop": false
     },
     "qrcode.vue": {
       "src": "../../qrcode.vue/dist/qrcode.vue.esm.js",
       "file": "qrcode__vue.js",
-      "fileHash": "db37d4e7",
+      "fileHash": "1f707bc0",
+      "needsInterop": false
+    },
+    "vue": {
+      "src": "../../vue/dist/vue.runtime.esm-bundler.js",
+      "file": "vue.js",
+      "fileHash": "0f3814f9",
+      "needsInterop": false
+    },
+    "vue-router": {
+      "src": "../../vue-router/dist/vue-router.mjs",
+      "file": "vue-router.js",
+      "fileHash": "7eac6207",
       "needsInterop": false
     }
   },
   "chunks": {
-    "chunk-KBUAZBQ3": {
-      "file": "chunk-KBUAZBQ3.js"
+    "chunk-TQOCY6B2": {
+      "file": "chunk-TQOCY6B2.js"
     },
-    "chunk-HUU76VBX": {
-      "file": "chunk-HUU76VBX.js"
+    "chunk-VCGGRANA": {
+      "file": "chunk-VCGGRANA.js"
     },
-    "chunk-BCNMYODF": {
-      "file": "chunk-BCNMYODF.js"
+    "chunk-5XDXAD5U": {
+      "file": "chunk-5XDXAD5U.js"
     },
-    "chunk-WNF2IDJY": {
-      "file": "chunk-WNF2IDJY.js"
+    "chunk-IDMHQ7FM": {
+      "file": "chunk-IDMHQ7FM.js"
     },
-    "chunk-XMOLR7NX": {
-      "file": "chunk-XMOLR7NX.js"
+    "chunk-UVFXKAFZ": {
+      "file": "chunk-UVFXKAFZ.js"
     },
-    "chunk-5OBJFL24": {
-      "file": "chunk-5OBJFL24.js"
+    "chunk-WT3GSKHH": {
+      "file": "chunk-WT3GSKHH.js"
     },
-    "chunk-3NMN3MUW": {
-      "file": "chunk-3NMN3MUW.js"
+    "chunk-XMOLR7NX": {
+      "file": "chunk-XMOLR7NX.js"
     },
     "chunk-4EOJPDL2": {
       "file": "chunk-4EOJPDL2.js"

+ 15 - 15
node_modules/.vite/deps/ant-design-vue.js

@@ -1,6 +1,6 @@
 import {
   _extends
-} from "./chunk-KBUAZBQ3.js";
+} from "./chunk-VCGGRANA.js";
 import {
   ArrowLeftOutlined_default,
   ArrowRightOutlined_default,
@@ -57,19 +57,7 @@ import {
   ZoomOutOutlined_default,
   generate,
   presetPrimaryColors
-} from "./chunk-HUU76VBX.js";
-import {
-  _objectSpread2,
-  zh_CN_default
-} from "./chunk-BCNMYODF.js";
-import {
-  _defineProperty,
-  _toPropertyKey,
-  _typeof
-} from "./chunk-WNF2IDJY.js";
-import {
-  require_dayjs_min
-} from "./chunk-XMOLR7NX.js";
+} from "./chunk-5XDXAD5U.js";
 import {
   Comment,
   Fragment,
@@ -116,7 +104,19 @@ import {
   watchEffect,
   withDirectives,
   withModifiers
-} from "./chunk-3NMN3MUW.js";
+} from "./chunk-IDMHQ7FM.js";
+import {
+  _objectSpread2,
+  zh_CN_default
+} from "./chunk-UVFXKAFZ.js";
+import {
+  _defineProperty,
+  _toPropertyKey,
+  _typeof
+} from "./chunk-WT3GSKHH.js";
+import {
+  require_dayjs_min
+} from "./chunk-XMOLR7NX.js";
 import {
   __commonJS,
   __export,

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
node_modules/.vite/deps/ant-design-vue.js.map


+ 2 - 2
node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js

@@ -1,8 +1,8 @@
 import {
   _objectSpread2,
   zh_CN_default
-} from "./chunk-BCNMYODF.js";
-import "./chunk-WNF2IDJY.js";
+} from "./chunk-UVFXKAFZ.js";
+import "./chunk-WT3GSKHH.js";
 import "./chunk-4EOJPDL2.js";
 
 // node_modules/ant-design-vue/es/vc-picker/locale/zh_CN.js

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
node_modules/.vite/deps/axios.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
node_modules/.vite/deps/js-md5.js.map


+ 2 - 2
node_modules/.vite/deps/mathjs.js

@@ -1,9 +1,9 @@
 import {
   _extends
-} from "./chunk-KBUAZBQ3.js";
+} from "./chunk-VCGGRANA.js";
 import {
   _defineProperty
-} from "./chunk-WNF2IDJY.js";
+} from "./chunk-WT3GSKHH.js";
 import {
   __commonJS,
   __export,

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
node_modules/.vite/deps/mathjs.js.map


+ 1 - 1
node_modules/.vite/deps/pinia-plugin-persist.js.map

@@ -1,7 +1,7 @@
 {
   "version": 3,
   "sources": ["../../pinia-plugin-persist/dist/pinia-persist.es.js"],
-  "sourcesContent": ["const updateStorage = (strategy, store) => {\n  const storage = strategy.storage || sessionStorage;\n  const storeKey = strategy.key || store.$id;\n  if (strategy.paths) {\n    const partialState = strategy.paths.reduce((finalObj, key) => {\n      finalObj[key] = store.$state[key];\n      return finalObj;\n    }, {});\n    storage.setItem(storeKey, JSON.stringify(partialState));\n  } else {\n    storage.setItem(storeKey, JSON.stringify(store.$state));\n  }\n};\nvar index = ({ options, store }) => {\n  var _a, _b, _c, _d;\n  if ((_a = options.persist) == null ? void 0 : _a.enabled) {\n    const defaultStrat = [{\n      key: store.$id,\n      storage: sessionStorage\n    }];\n    const strategies = ((_c = (_b = options.persist) == null ? void 0 : _b.strategies) == null ? void 0 : _c.length) ? (_d = options.persist) == null ? void 0 : _d.strategies : defaultStrat;\n    strategies.forEach((strategy) => {\n      const storage = strategy.storage || sessionStorage;\n      const storeKey = strategy.key || store.$id;\n      const storageResult = storage.getItem(storeKey);\n      if (storageResult) {\n        store.$patch(JSON.parse(storageResult));\n        updateStorage(strategy, store);\n      }\n    });\n    store.$subscribe(() => {\n      strategies.forEach((strategy) => {\n        updateStorage(strategy, store);\n      });\n    });\n  }\n};\nexport { index as default, updateStorage };\n"],
+  "sourcesContent": ["const updateStorage = (strategy, store) => {\r\n  const storage = strategy.storage || sessionStorage;\r\n  const storeKey = strategy.key || store.$id;\r\n  if (strategy.paths) {\r\n    const partialState = strategy.paths.reduce((finalObj, key) => {\r\n      finalObj[key] = store.$state[key];\r\n      return finalObj;\r\n    }, {});\r\n    storage.setItem(storeKey, JSON.stringify(partialState));\r\n  } else {\r\n    storage.setItem(storeKey, JSON.stringify(store.$state));\r\n  }\r\n};\r\nvar index = ({ options, store }) => {\r\n  var _a, _b, _c, _d;\r\n  if ((_a = options.persist) == null ? void 0 : _a.enabled) {\r\n    const defaultStrat = [{\r\n      key: store.$id,\r\n      storage: sessionStorage\r\n    }];\r\n    const strategies = ((_c = (_b = options.persist) == null ? void 0 : _b.strategies) == null ? void 0 : _c.length) ? (_d = options.persist) == null ? void 0 : _d.strategies : defaultStrat;\r\n    strategies.forEach((strategy) => {\r\n      const storage = strategy.storage || sessionStorage;\r\n      const storeKey = strategy.key || store.$id;\r\n      const storageResult = storage.getItem(storeKey);\r\n      if (storageResult) {\r\n        store.$patch(JSON.parse(storageResult));\r\n        updateStorage(strategy, store);\r\n      }\r\n    });\r\n    store.$subscribe(() => {\r\n      strategies.forEach((strategy) => {\r\n        updateStorage(strategy, store);\r\n      });\r\n    });\r\n  }\r\n};\r\nexport { index as default, updateStorage };\r\n"],
   "mappings": ";;;AAAA,IAAM,gBAAgB,CAAC,UAAU,UAAU;AACzC,QAAM,UAAU,SAAS,WAAW;AACpC,QAAM,WAAW,SAAS,OAAO,MAAM;AACvC,MAAI,SAAS,OAAO;AAClB,UAAM,eAAe,SAAS,MAAM,OAAO,CAAC,UAAU,QAAQ;AAC5D,eAAS,GAAG,IAAI,MAAM,OAAO,GAAG;AAChC,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AACL,YAAQ,QAAQ,UAAU,KAAK,UAAU,YAAY,CAAC;AAAA,EACxD,OAAO;AACL,YAAQ,QAAQ,UAAU,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,EACxD;AACF;AACA,IAAI,QAAQ,CAAC,EAAE,SAAS,MAAM,MAAM;AAClC,MAAI,IAAI,IAAI,IAAI;AAChB,OAAK,KAAK,QAAQ,YAAY,OAAO,SAAS,GAAG,SAAS;AACxD,UAAM,eAAe,CAAC;AAAA,MACpB,KAAK,MAAM;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AACD,UAAM,eAAe,MAAM,KAAK,QAAQ,YAAY,OAAO,SAAS,GAAG,eAAe,OAAO,SAAS,GAAG,WAAW,KAAK,QAAQ,YAAY,OAAO,SAAS,GAAG,aAAa;AAC7K,eAAW,QAAQ,CAAC,aAAa;AAC/B,YAAM,UAAU,SAAS,WAAW;AACpC,YAAM,WAAW,SAAS,OAAO,MAAM;AACvC,YAAM,gBAAgB,QAAQ,QAAQ,QAAQ;AAC9C,UAAI,eAAe;AACjB,cAAM,OAAO,KAAK,MAAM,aAAa,CAAC;AACtC,sBAAc,UAAU,KAAK;AAAA,MAC/B;AAAA,IACF,CAAC;AACD,UAAM,WAAW,MAAM;AACrB,iBAAW,QAAQ,CAAC,aAAa;AAC/B,sBAAc,UAAU,KAAK;AAAA,MAC/B,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;",
   "names": []
 }

+ 2 - 2
node_modules/.vite/deps/pinia.js

@@ -1,6 +1,6 @@
 import {
   setupDevtoolsPlugin
-} from "./chunk-5OBJFL24.js";
+} from "./chunk-TQOCY6B2.js";
 import {
   computed,
   effectScope,
@@ -19,7 +19,7 @@ import {
   toRefs,
   unref,
   watch
-} from "./chunk-3NMN3MUW.js";
+} from "./chunk-IDMHQ7FM.js";
 import "./chunk-4EOJPDL2.js";
 
 // node_modules/pinia/node_modules/vue-demi/lib/index.mjs

+ 2 - 2
node_modules/.vite/deps/vue-router.js

@@ -1,6 +1,6 @@
 import {
   setupDevtoolsPlugin
-} from "./chunk-5OBJFL24.js";
+} from "./chunk-TQOCY6B2.js";
 import {
   computed,
   defineComponent,
@@ -18,7 +18,7 @@ import {
   unref,
   watch,
   watchEffect
-} from "./chunk-3NMN3MUW.js";
+} from "./chunk-IDMHQ7FM.js";
 import "./chunk-4EOJPDL2.js";
 
 // node_modules/vue-router/dist/vue-router.mjs

+ 1 - 1
node_modules/.vite/deps/vue.js

@@ -145,7 +145,7 @@ import {
   withMemo,
   withModifiers,
   withScopeId
-} from "./chunk-3NMN3MUW.js";
+} from "./chunk-IDMHQ7FM.js";
 import "./chunk-4EOJPDL2.js";
 export {
   BaseTransition,

+ 18 - 4
src/DRP/SDrpManagement/payOrders/detail/index.vue

@@ -1,15 +1,29 @@
 <template>
   <div>
-    <detail-template :headData="mainAreaData" :title="orderData.orderno" :tabs="['付费订单明细']">
+    <detail-template :headData="mainAreaData" :title="orderData.orderno" :tabs="['付费订单明细']" ownertable="sys_payorder">
       <template #operation>
         <a-space>
-          <payment :ispaid="orderData.ispaid"></payment>
+          <payment :ispaid="orderData.ispaid" @onClose="mainData"></payment>
         </a-space>
       </template>
       <template #tab0>
-        <tableTemp ref="list" :columns="columns" :dataSource="dataSource" :param="param" :tableName="'orderDetail'"
+        <tableTemp v-if="orderData.sys_payincidence == 1" ref="list" :columns="columns" :dataSource="dataSource" :param="param" :tableName="'orderDetail'"
                    @onList="listData">
-
+          <template #tb_cell="{data}">
+            <template v-if="data.column.dataIndex === 'price'">
+              <span style="color: red">{{utils.formatAmount(data.record.price)}}</span>
+              <a-tag color="orange" style="margin-left: 5px" v-if="data.record.price == 0">优惠抵扣</a-tag>
+            </template>
+          </template>
+        </tableTemp>
+        <tableTemp v-else ref="list" :columns="columns" :dataSource="dataSource" :param="param" :tableName="'orderDetailMain'"
+                   @onList="listData">
+          <template #tb_cell="{data}">
+            <template v-if="data.column.dataIndex === 'price'">
+              <span style="color: red">{{utils.formatAmount(data.record.price)}}</span>
+              <a-tag color="orange" style="margin-left: 5px" v-if="data.record.price == 0">优惠抵扣</a-tag>
+            </template>
+          </template>
         </tableTemp>
       </template>
     </detail-template>

+ 27 - 10
src/DRP/SDrpManagement/payOrders/index.vue

@@ -2,7 +2,7 @@
   <div>
     <listTemp ref="list" :columns="columns" :param="param" :tableName="'payOrdersTable'" keyRouteName="orderno" :searchType="searchType" :detailPage="{name:'payOrdersDetail',idname:'sys_payorderid'}">
       <template #operation>
-        <addTemp @payClose="onSuccess"></addTemp>
+        <addTemp @payClose="onSuccess" v-if="utils.hasPermission('insert')"></addTemp>
       </template>
       <template #tb_cell="{data}">
         <template v-if="data.column.dataIndex === 'ispaid'">
@@ -16,8 +16,16 @@
         </template>
         <template v-if="data.column.dataIndex === 'operation'">
           <a-space>
-<!--            <editTemp :data="data.record"></editTemp>
-            <a-button type="link" @click="onDelete(data.record)">删 除</a-button>-->
+            <a-popconfirm
+                title="确定删除该订单吗?"
+                ok-text="是"
+                cancel-text="否"
+                @confirm="onDelete(data.record)"
+                @cancel="cancel"
+            >
+              <a-button type="link"  :disabled="(data.record.ispaid == 1 || data.record.ispaid == 4) || !utils.hasPermission('delete')">删 除</a-button>
+            </a-popconfirm>
+
           </a-space>
         </template>
       </template>
@@ -33,6 +41,7 @@
   import {ref, createVNode, defineEmits} from 'vue'
   import { useRouter } from "vue-router";
   import { onMounted } from "vue";
+  import {notification} from "ant-design-vue";
   const emit = defineEmits(['onSuccess'])
   const router = useRouter()
   const list = ref()
@@ -54,17 +63,25 @@
   })
   const onSuccess = async()=>{
     list.value.tableData()
+  }
+  const cancel = ()=>{
+    list.value.tableData()
+  }
+  const onDelete = async (row)=>{
     const res = await Api.requested({
-      "classname": "sysmanage.develop.userauthforweb.userauth",
-      "method": "query_userauth",
+      "classname": "system.payorder.payorder",
+      "method": "delete",
       "content": {
-        "nocache":true,
-        "place": 1
+        "sys_payorderid": row.sys_payorderid
       },
-      "systemappid": ""
     })
-    console.log(res.data)
-    // sessionStorage.setItem('app',JSON.stringify(res.data[1].modules[1].apps))
+    notification.info({
+      message: '付款订单删除',
+      description: res.msg,
+      onClick: () => {
+      },
+    });
+    list.value.tableData()
   }
 
 </script>

+ 84 - 8
src/DRP/SDrpManagement/payOrders/modules/add.vue

@@ -31,15 +31,38 @@
           </a-col>
           <a-col :span="24">
             <a-form-item label="选择付费账号:"  >
-              <tableTemp ref="list" :columns="columns" :dataSource="dataSource" :param="param" :tableName="'accountTable'" :noAutoQuery="true"
-                         @onList="listData" @onSelect="onSelect">
+              <tableTemp v-if="sys_payincidence == '1'" ref="list" :columns="columns" :dataSource="dataSource" :param="param" :tableName="'accountTable'" :noAutoQuery="true"
+                         @onList="listData" >
                 <template #tb_cell="{data}">
                   <template v-if="data.column.dataIndex === 'enddate'">
                      <span v-for="(item,index) in data.record.enddate" :key="index">
                         <span v-if="form.sys_site_systempartitionid == index" >{{item}}</span>
                      </span>
                   </template>
-                  <template v-if="data.column.dataIndex === 'operation'">
+                  <template v-else-if="data.column.dataIndex === 'name'">
+                     <span>{{data.record.name}}</span>
+                     <a-tag v-if="JSON.stringify(data.record.enddate) === '{}'" color="#f50" style="margin-left: 5px">未付费</a-tag>
+                  </template>
+                  <template v-else-if="data.column.dataIndex === 'accountno'">
+                    <span>{{data.record.accountno}}</span>
+                    <a-tag v-if="data.record.isleader == 1" color="#f50" style="margin-left: 5px">主账号</a-tag>
+                  </template>
+                  <template v-else-if="data.column.dataIndex === 'operation'">
+                    <a-space>
+                      <a-checkbox :checked="data.record.checkRow" @change="checkSelect(data.record)" :disabled="userLeader === data.record.userid"></a-checkbox>
+                    </a-space>
+                  </template>
+                </template>
+              </tableTemp>
+              <tableTemp v-else ref="list" :columns="columns" :dataSource="dataSource" :param="param" :tableName="'mainBodyTable'" :noAutoQuery="true"
+                         @onList="listData" >
+                <template #tb_cell="{data}">
+                  <template v-if="data.column.dataIndex === 'enddate'">
+                     <span v-for="(item,index) in data.record.enddate" :key="index">
+                        <span v-if="form.sys_site_systempartitionid == index" >{{item}}</span>
+                     </span>
+                  </template>
+                  <template v-else-if="data.column.dataIndex === 'operation'">
                     <a-space>
                       <a-checkbox :checked="data.record.checkRow" @change="checkSelect(data.record)" :disabled="userLeader === data.record.userid"></a-checkbox>
                     </a-space>
@@ -115,6 +138,13 @@
       </template>
     </a-drawer>
     <payment ref="payRef" :hide="hide" @onClose="payClose"></payment>
+    <a-modal v-model:visible="payVisible" title="付费提醒" :centered="true" :closable="false" >
+      <p>优惠后金额为0,是否确认?</p>
+      <template #footer>
+        <a-button type="primary" @click="payVisible = false;visible = false">取消</a-button>
+        <a-button type="primary" @click="queryCode">确定</a-button>
+      </template>
+    </a-modal>
   </div>
 </template>
 
@@ -124,8 +154,12 @@
   import tableTemp from '@/template/payOrderTable/index.vue'
   import payment from './payment.vue'
   import {ref, onMounted, defineEmits, defineExpose} from 'vue'
+  import {useRouter} from "vue-router";
+  import {notification} from "ant-design-vue";
+  const router = useRouter()
   const emit = defineEmits(['onSuccess','payClose'])
   const visible = ref(false)
+  const payVisible = ref(false)
   const hide = ref(false)
   const list = ref()
   const userLeader = ref()
@@ -144,6 +178,7 @@
     },
   })
   const payInstructions = ref()
+  const sys_payincidence = ref()
   const versionList = ref()
   const couponList = ref([])
   const formRef = ref()
@@ -198,6 +233,16 @@
       }
 
     })
+    if (router.currentRoute.value.query.id){
+      dataSource.value.forEach(item=>{
+        for (var i = 0;i<router.currentRoute.value.query.id.length;i++){
+          if (router.currentRoute.value.query.id[i] == item.userid){
+            item.checkRow = true
+            break
+          }
+        }
+      })
+    }
 
     let date = ref(new Date())
     dataNow.value = ref(date.value.getFullYear() + '-' + (date.value.getMonth() + 1) + '-' + date.value.getDate())
@@ -209,13 +254,45 @@
     queryInstructions()
     queryCoupon()
 
+  }
+  /*获取付费二维码*/
+  const queryCode = async ()=>{
+    const res = await Api.requested({
+      "classname": "system.payment.wechatpay",
+      "method": "createNativeWechatOrder",
+      "content": {
+        "orderno": orderno.value
+      },
+    })
+
+    if (res.code === 1){
+      visible.value = false
+      payVisible.value = false
+      emit('payClose')
+    }else {
+      visible.value = false
+      payVisible.value = false
+      notification.info({
+        message: '订单创建失败',
+        description: res.msg,
+        onClick: () => {
+        },
+      });
+    }
+
   }
   const onSubmit = ()=> {
     /*queryCode()*/
-    visible.value = false
+    /*visible.value = false*/
     userLeader.value = ''
     userids.value = []
-    payRef.value.visibleShow(form.value.sys_payorderid)
+    if (totalAmount.value == 0){
+      payVisible.value = true
+    }else {
+      visible.value = false
+      payRef.value.visibleShow(form.value.sys_payorderid)
+    }
+
   }
   const onClose = ()=>{
     visible.value = false
@@ -243,6 +320,7 @@
       },
     })
     payInstructions.value = res.data.sys_payinstructions
+    sys_payincidence.value = res.data.sys_payincidence
   }
   /*版本信息*/
   const queryVersion = async ()=>{
@@ -316,7 +394,7 @@
       }
 
     })
-    console.log(userids.value,'已选择的用户')
+
     accountNum.value = userids.value.length
     usAccountNum.value = newAccount.value.length
     message.value = ''
@@ -327,7 +405,6 @@
         }else {
           message.value = message.value +  ',' + item.name
         }
-
       }
     })
     queryPrice()
@@ -340,7 +417,6 @@
   }
   onMounted(()=>{
     if (JSON.parse(sessionStorage.getItem('isPay')) === 1){
-      console.log('执行')
       showDrawer()
       sessionStorage.setItem('isPay',2)
 

+ 5 - 3
src/DRP/SDrpManagement/payOrders/modules/payment.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <a-button type="primary" @click="visibleShow(router.currentRoute.value.query.id)" v-if="hide || ispaid === 0 ">继续付费</a-button>
+    <a-button type="primary" @click="visibleShow(router.currentRoute.value.query.id)" v-if="(hide || ispaid === 0) && utils.hasPermission('insert') ">继续付费</a-button>
     <a-drawer
         v-model:visible="visible"
         class="custom-class"
@@ -129,7 +129,6 @@ import {defineEmits, defineExpose, defineProps, onMounted, ref} from "vue";
   const formRef = ref()
   const visibleShow = (id)=>{
     visible.value = true
-
     detailData(id)
     param.value.content.sys_payorderid = id
     list.value.tableData()
@@ -140,7 +139,7 @@ import {defineEmits, defineExpose, defineProps, onMounted, ref} from "vue";
     dataSource.value = row
   }
   /*获取订单详情*/
-  const detailData = async (id)=>{
+  const detailData = async (id,check)=>{
     const res = await Api.requested({
       "classname": "system.payorder.payorder",
       "method": "detail",
@@ -156,7 +155,10 @@ import {defineEmits, defineExpose, defineProps, onMounted, ref} from "vue";
       sys_payincidence:res.data.sys_payincidence,
       remarks:res.data.remarks
     }
+
     queryCode(form.value.orderno)
+
+
   }
   /*获取付费二维码*/
   const queryCode = async (orderno)=>{

+ 14 - 5
src/DRP/SDrpManagement/team/index.vue

@@ -1,16 +1,25 @@
 <template>
   <div>
-    <listTemp ref="list" :columns="columns" :param="param" :tableName="'teamTable'" :searchType="searchType"  :detailPage="{name:'',idname:'sys_enterprise_hrid'}">
+    <listTemp ref="list" :columns="columns" :param="param" :tableName="'teamTable'" :searchType="searchType" keyRouteName="accountno"  :detailPage="{name:'teamManagentDetail',idname:'sys_enterprise_hrid'}">
       <template #operation>
         <add-temp @onSuccess="onSuccess"></add-temp>
       </template>
       <template #tb_cell="{data}">
         <template v-if="data.column.dataIndex === 'rolename'">
-          <a-tag>
-            {{data.record.rolename}}
+          <a-tag v-for="item in data.record.rolenames" :key="item.index" color="blue">
+            {{item}}
           </a-tag>
         </template>
-        <template v-if="data.column.dataIndex === 'operation'">
+        <template v-else-if="data.column.dataIndex === 'statusNew'">
+          <span style="color: #4f7bfd" v-if="data.record.status == '未付费'">{{data.record.status}}</span>
+          <span v-else >{{data.record.status}}</span>
+        </template>
+        <template v-else-if="data.column.dataIndex === 'partitionname'">
+          <a-tag v-for="item in data.record.partitionname" :key="item.index" color="green">
+            {{item.partitionname + item.enddate}}
+          </a-tag>
+        </template>
+        <template v-else-if="data.column.dataIndex === 'operation'">
           <a-space>
             <editTemp :data="data.record"></editTemp>
             <a-button type="link" @click="onDelete(data.record)">删 除</a-button>
@@ -73,4 +82,4 @@
   }
 </script>
 <style>
-</style>
+</style>

+ 120 - 0
src/DRP/SDrpManagement/team/modules/detail.vue

@@ -0,0 +1,120 @@
+<template>
+  <div>
+    <detail-template :headData="mainAreaData" :title="'账号:'+ payData.accountno" :tabs="['付费信息']" ownertable="sys_payorder">
+      <template #operation>
+        <a-space>
+          <a-button type="primary" @click="onPay" v-if="utils.hasPermission('pay')">账号付费</a-button>
+        </a-space>
+      </template>
+      <template #tab0>
+        <tableTemp  ref="list" :columns="columns" :dataSource="dataSource" :param="param" :tableName="'payDataTable'"
+                   @onList="listData">
+          <template #tb_cell="{data}">
+            <template v-if="data.column.dataIndex === 'partitionname'">
+              <a-tag color="green" >{{data.record.partitionname}}</a-tag>
+            </template>
+            <template v-else-if="data.column.dataIndex === 'ispaid'">
+              <span>{{data.record.ispaid === 1 ? '已付费' : '未付费'}}</span>
+            </template>
+          </template>
+        </tableTemp>
+      </template>
+    </detail-template>
+  </div>
+</template>
+
+<script setup>
+  import detailTemplate from '@/components/detailTemplate/index.vue'
+  import Api from '@/api/api'
+  import tableTemp from '@/template/payOrderTable/tableTemp.vue'
+  import utils from '@/utils/utils'
+  const store = useAuthStore()
+  let { system,mods,act_mods } = storeToRefs(store)
+  import {onMounted,ref} from "vue";
+  import {useRouter} from "vue-router";
+  import {useAuthStore} from "../../../../stores/modules/auth";
+  import {storeToRefs} from "pinia";
+  const mainAreaData = ref([])
+  const router = useRouter()
+  const payData = ref({})
+  let columns = ref([])
+  let dataSource = ref([])
+  const list = ref()
+  let param = ref({
+    "classname": "sale.team.team",
+    "method": "queryPaid",
+    "content": {
+      "userid": "",
+      "pageNumber": 1,
+      "pageSize": 20,
+      "where": {
+        "condition": "",
+        "ispaid": "1"
+      }
+    },
+  })
+  /*表格数据*/
+  const listData = (row)=>{
+    console.log(row)
+    dataSource.value = row
+    console.log(dataSource.value)
+  }
+  const changeDataStructure = ()=>{
+    payData.value = JSON.parse(router.currentRoute.value.query.data)
+    mainAreaData.value = [
+      {
+        label:'账号名称',
+        value:payData.value.name,
+      },
+      {
+        label:'账号',
+        value:payData.value.accountno,
+      },
+      {
+        label:'手机号',
+        value:payData.value.phonenumber,
+      },
+      {
+        label:'职位',
+        value:payData.value.position,
+      },
+      {
+        label:'角色',
+        value:payData.value.rolenames[0],
+      },
+      {
+        label:'有无付费',
+        value:payData.value.status,
+        style:function() {
+          let style = {}
+          switch (payData.value.status) {
+            case '未付费':
+              style = {color:"#d90a0a"}
+              break;
+            case '已付费':
+              style = {color:"#52C41A"}
+              break;
+            default:
+              break;
+          }
+          return style
+        },
+      },
+    ]
+  }
+  const onPay = ()=>{
+    sessionStorage.setItem('isPay',1)
+    mods.value = system.value[1].modules
+    router.push({name:'payOrders'})
+  }
+  onMounted(()=>{
+    changeDataStructure()
+    param.value.content.userid = payData.value.userid
+    list.value.tableData()
+  })
+
+</script>
+
+<style scoped>
+
+</style>

+ 113 - 0
src/components/layout/index.vue

@@ -23,14 +23,127 @@
       Copyright © 2023 嘉兴市云链信息技术有限公司
     </a-layout-footer>
   </a-layout>
+  <a-modal v-model:visible="terminateVisible" title="付费提醒"  :centered="true" :closable="false" >
+    <p>{{contentMsg}}</p>
+    <template #footer>
+      <a-button type="primary" @click="queryNext">下次再说</a-button>
+      <a-button type="primary" v-if="usertype == '22'" @click="onRemind">提醒老板</a-button>
+      <a-button type="primary" @click="onPay">去付费</a-button>
+    </template>
+  </a-modal>
+  <a-modal v-model:visible="visible" title="付费提醒" :centered="true" :closable="false" >
+    <p>{{contentMsg}}</p>
+    <template #footer>
+      <a-button type="primary" @click="visible = false">下次再说</a-button>
+      <a-button type="primary" v-if="usertype == '22'">提醒老板</a-button>
+      <a-button type="primary" @click="onPay">去付费</a-button>
+    </template>
+  </a-modal>
 </template>
 <script setup>
 import headTemp from './header.vue';
 import asideTemp from './aside.vue'
 import webSocket from '../webSocket/index.vue'
+import Api from '@/api/api'
 import { useRouter } from "vue-router";
+import {onMounted, ref} from "vue";
+import {useAuthStore} from "../../stores/modules/auth";
+import {storeToRefs} from "pinia";
+import {notification} from "ant-design-vue";
+const store = useAuthStore()
+let { system,mods,act_mods } = storeToRefs(store)
+const terminateVisible = ref(false)
+const visible = ref(false)
+const usertype = ref()
 const router = useRouter()
+const contentMsg = ref()
+const userids = ref([])
+const name = ref()
+/*查询到期付费账号*/
+const queryAccount = async ()=>{
+  const res = await Api.requested({
+      "classname": "sysmanage.develop.paymentrules.paymentrules",
+      "method": "queryRemind",
+      "content": {
+        "siteid":JSON.parse(sessionStorage.getItem('active_account')).siteid
+      },
+  })
+  if (res.data.length >0){
+    visible.value = true
+    contentMsg.value = '【'+res.data[0].partitionname+'】将在'+res.data[0].days+'天后到期,请尽快续费!'
+  }else {
+    if (usertype != '22'){
+      queryReminder()
+    }
+  }
 
+}
+/*查询需要付费的账号*/
+const queryReminder = async ()=>{
+  const res = await Api.requested({
+    "classname": "sysmanage.develop.paymentrules.paymentrules",
+    "method": "queryRemindUser",
+    "content": {
+      "siteid":JSON.parse(sessionStorage.getItem('active_account')).siteid
+    },
+  })
+  console.log(res.data)
+  if (res.data.length > 0){
+    visible.value = true
+    res.data.forEach((item,index)=>{
+      if (index === 0){
+        name.value = item.name
+      }else {
+        name.value = name.value + '/' + item.name
+      }
+      userids.value[index] = item.userid
+    })
+    contentMsg.value = name.value +  ' 申请账号付费,请前往处理!'
+  }
+
+}
+const onPay = ()=>{
+  visible.value = false
+  terminateVisible.value = false
+  sessionStorage.setItem('isPay',1)
+  mods.value = system.value[1].modules
+  router.push({name:'payOrders',query:{id:userids.value}})
+}
+const queryNext = ()=>{
+  if (usertype.value == '22'){
+    terminateVisible.value = false
+  }else {
+    queryReminder()
+  }
+}
+const onRemind = async ()=>{
+  const res = await Api.requested({
+    "classname": "system.payorder.payorder",
+    "method": "sendMessage",
+    "content": {
+      "sys_payorderid": 0
+    },
+  })
+  if (res.code === 1){
+    notification.info({
+      message: '提醒老板付费',
+      description: '已提醒老板付费',
+      onClick: () => {
+      },
+    })
+  }else {
+    notification.info({
+      message: '提醒老板付费',
+      description: res.msg,
+      onClick: () => {
+      },
+    })
+  }
+}
+onMounted (()=>{
+  usertype.value = JSON.parse(sessionStorage.getItem('active_account')).usertype
+  queryAccount()
+})
 
 </script>
 <style>

+ 17 - 1
src/components/listTemplate/index.vue

@@ -33,6 +33,7 @@
   import { useRouter,onBeforeRouteLeave } from "vue-router";
   import { useAuthStore } from '@/stores/modules/auth'
   import { useBaseStore } from '@/stores/modules/base'
+  import {map, re} from "mathjs";
   const store = useAuthStore()
   const base = useBaseStore()
   let { system,mods,act_mods } = storeToRefs(store)
@@ -91,7 +92,22 @@
 
   const toDetailPage = (record)=>{
     // 跳转到详情
-    router.push({name:props.detailPage.name,query:{id:record[props.detailPage.idname]}})
+    console.log(record,'record')
+    if (record.status === '已付费' || record.status === '未付费'){
+      const data = ref({
+        status:record.status,
+        name:record.name,
+        accountno:record.accountno,
+        phonenumber:record.phonenumber,
+        position:record.position,
+        rolenames:record.rolenames,
+        userid:record.userid
+      })
+      router.push({name:props.detailPage.name,query:{id:record[props.detailPage.idname],data:JSON.stringify(data.value)}})
+    }else {
+      router.push({name:props.detailPage.name,query:{id:record[props.detailPage.idname]}})
+    }
+
   }
   const search = (val)=>{
     // props.param.content.where = Object.assign({},props.param.content.where,val)

+ 10 - 1
src/router/SDrpManagement.js

@@ -188,6 +188,15 @@ const SDrpManagement = [
     },
     component: () => import(/* webpackChunkName: "about" */ '@/DRP/SDrpManagement/team/index.vue')
   },
+  {
+    path: '/team_managentDetail',
+    name: 'teamManagentDetail',
+    meta: {
+      title: '团队管理详情',
+      name: 'teamManagent',
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/DRP/SDrpManagement/team/modules/detail.vue')
+  },
   {
     path: '/pay_orders',
     name: 'payOrders',
@@ -201,7 +210,7 @@ const SDrpManagement = [
     path: '/payOrdersDetail',
     name: 'payOrdersDetail',
     meta: {
-      title: '付费订单',
+      title: '付费订单详情',
       name: 'payOrders',
     },
     component: () => import(/* webpackChunkName: "about" */ '@/DRP/SDrpManagement/payOrders/detail/index.vue')

+ 47 - 5
src/template/payOrderTable/noAccess.vue

@@ -1,23 +1,65 @@
 <template>
   <div>
-    <a-modal v-model:visible="visible" title="付费提醒" :okText="'付费'" @ok="handleOk" :centered="true" :closable="false">
+    <a-modal v-model:visible="visible" title="付费提醒" :okText="'付费'" :cancelText="cancelText" @ok="handleOk" @cancel="cancel" :centered="true" :closable="false">
       <p>当前模块未付费,请前往付费使用</p>
     </a-modal>
   </div>
 </template>
 
 <script setup>
-import {defineExpose, onMounted, ref} from "vue";
-import { useRouter } from "vue-router";
-const router = useRouter()
+  import {defineExpose, onMounted, ref} from "vue";
+  import Api from '@/api/api'
+  import { useRouter } from "vue-router";
+  import {storeToRefs} from "pinia";
+  import {useAuthStore} from "../../stores/modules/auth";
+  import {notification} from "ant-design-vue";
+  const store = useAuthStore()
+  let { system,mods,act_mods } = storeToRefs(store)
+  const router = useRouter()
+
+  const cancelText = ref()
 
   const visible = ref(true)
   const handleOk = ()=>{
     sessionStorage.setItem('isPay',1)
+    mods.value = system.value[1].modules
     router.push({name:'payOrders'})
   }
-
+  const cancel = async ()=>{
+    if (cancelText.value === '取消'){
+      visible.value = false
+    }else {
+      const res = await Api.requested({
+        "classname": "system.payorder.payorder",
+        "method": "sendMessage",
+        "content": {
+          "sys_payorderid": 0
+        },
+      })
+      if (res.code === 1){
+        notification.info({
+          message: '提醒老板付费',
+          description: '已提醒老板付费',
+          onClick: () => {
+          },
+        })
+      }else {
+        notification.info({
+          message: '提醒老板付费',
+          description: res.msg,
+          onClick: () => {
+          },
+        })
+      }
+    }
+  }
   const visibleShow = ()=>{
+    console.log(JSON.parse(sessionStorage.getItem('active_account')).usertype)
+    if (JSON.parse(sessionStorage.getItem('active_account')).usertype == 22){
+      cancelText.value = '提醒付费'
+    }else {
+      cancelText.value = '取消'
+    }
     visible.value = true
   }
   defineExpose({

+ 20 - 14
src/template/payOrderTable/tableTemp.vue

@@ -72,22 +72,28 @@
     loading.value = true
     const res = await Api.requested(props.param)
     let  selects = ref([])
-    res.data.forEach(item=>{
-      if (item.isleader === 1){
-        console.log(item)
-        if (item.enddate !== {}){
-          selectedRowKeys.value = [item.userid]
-          selects.value[0] = item
-          console.log(selects.value,2222)
 
-          return
+    if (res.data){
+      res.data.forEach(item=>{
+        if (item.isleader === 1){
+
+          if (item.enddate !== {}){
+            selectedRowKeys.value = [item.userid]
+            selects.value[0] = item
+
+
+            return
+          }
         }
-      }
-    })
-    emit('onList',res.data)
-    emit('onSelect',selects.value)
-    total.value = res.total
-    loading.value = false
+      })
+      emit('onList',res.data)
+      emit('onSelect',selects.value)
+      total.value = res.total
+      loading.value = false
+    }else {
+      tableData()
+    }
+
   }
   defineExpose({
     tableData,

+ 16 - 4
src/views/message/index.vue

@@ -2,7 +2,8 @@
   <div class="y-container">
     <div v-for="item in message" :key="item.index" @click="readMessage(item)">
       <a-tag color="#108ee9">{{item.title}}</a-tag><a-tag :color="item.isread == 1?'#87d068':'#f50'">{{item.isread == 1?'已读':'未读'}}</a-tag><small>{{item.createdate}}</small>
-      <p class="message-content">{{item.message}}</p>
+      <p v-if="item.objectname === 'sys_payorder'" class="message-content" @click="onPay">{{item.message}}</p>
+      <p v-else class="message-content">{{item.message}}</p>
       <a-divider />
     </div>
     <div class="empty" v-if="message.length == 0" >
@@ -15,6 +16,12 @@
 <script setup>
   import Api from '@/api/api'
   import {ref,onMounted} from 'vue'
+  import {useAuthStore} from "../../stores/modules/auth";
+  import {storeToRefs} from "pinia";
+  import {useRouter} from "vue-router";
+  const store = useAuthStore()
+  let { system,mods,act_mods } = storeToRefs(store)
+  const router = useRouter()
   const param = ref({
     "classname":"system.message.Message",
     "method":"queryMessage",
@@ -39,9 +46,9 @@
     queryMessage()
   }
   const readMessage = async (item)=>{
-    if (item.isread == 1) 
+    if (item.isread == 1)
       return false
-      
+
     await Api.requested({
       "classname": "system.message.Message",
       "method": "readMessage",
@@ -52,6 +59,11 @@
     })
     item.isread = 1
   }
+  const onPay = ()=>{
+    sessionStorage.setItem('isPay',1)
+    mods.value = system.value[1].modules
+    router.push({name:'payOrders'})
+  }
   onMounted(()=>{
     queryMessage()
   })
@@ -67,4 +79,4 @@
     justify-content: space-around;
     height:calc(100vh - 200px)
   }
-</style>
+</style>

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác