Bläddra i källkod

一些东西,thinkphp-workerman一大堆问题用不了别试了

aexiaoliou 1 år sedan
förälder
incheckning
f31895c63f

+ 1 - 0
api/README.md

@@ -18,4 +18,5 @@ docker run -d --rm -it -v $PWD:/var/www/html -e VIRTUAL_HOST='~..*' \
     -e VIRTUAL_DEST='/public' \
     --name project-manager \
     --net use-proxy project-manager-backend:8.0-apache
+docker network connect use-db project-manager
 ```

+ 6 - 4
api/app/common.php

@@ -45,11 +45,13 @@ if (!function_exists('getVirRootDir')) {
     {
         if (isset($_SERVER['HTTP_X_ORIGINAL_URI'])) {
             $url = $_SERVER['HTTP_X_ORIGINAL_URI'];
-            return preg_replace('/index\.php.*/m', '', $url);
+            return preg_replace('/\\\\index\.php.*/m', '', $url);
+        } elseif (isset($_SERVER['SCRIPT_NAME'])) {
+            $url = $_SERVER['SCRIPT_NAME'];
+            $url = substr($url, 0, strripos($url, "/"));
+            return $url;
         }
-        $url = $_SERVER['SCRIPT_NAME'];
-        $url = substr($url, 0, strripos($url, "/"));
-        return $url;
+        return '';
     }
 }
 

+ 27 - 6
api/app/common/service/FileService.php

@@ -2,10 +2,12 @@
 
 namespace app\common\service;
 
-use app\common\service\Service;
-use think\facade\Filesystem;
+use think\File;
 use think\facade\Request;
 use think\facade\Validate;
+use think\facade\Filesystem;
+use app\common\service\Service;
+use Workerman\Worker;
 
 class FileService extends Service
 {
@@ -48,10 +50,29 @@ class FileService extends Service
     public function uploadAttachment($path = 'default')
     {
         // 获取表单上传文件
-        $files = request()->file();
-        // 验证上传文件格式和大小
-        $this->validate($files, Validate::rule(['file' => 'fileExt:pdf,doc,docx']));
-        $file = request()->file('file');
+        if (count(Worker::getAllWorkers()) > 0) {
+            $file = $_FILES[0]['file_data'];
+            //$tmp_file  = tempnam('','tm_');  这种写法最终保存时扩展名为.tmp
+            $tmp_file = sys_get_temp_dir() . '/' . uniqid() . '.' . explode('/', $_FILES[0]['file_type'])[1];
+            file_put_contents($tmp_file, $file);
+            $file = new File($tmp_file);
+            // 验证上传文件格式和大小
+            $files = ['file' => $file];
+            if (
+                !in_array($file->getMime(), [
+                    'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // docx
+                    'application/pdf', 
+                    'application/msword' //doc
+                ])
+            ) {
+                throw $this->exception('文件mime不符合要求,(请使用pdf,doc,docx)', 777);
+            }
+        } else {
+            // 获取表单上传文件
+            $files = request()->file();
+            $file = request()->file('file');
+            $this->validate($files, Validate::rule(['file' => 'fileExt:pdf,doc,docx']));
+        }
         try {
             // 保存上传文件到public目录下的$path目录中
             $path = Filesystem::disk('public')->putFile($path, $file);

+ 22 - 4
api/app/common/service/ProjectService.php

@@ -16,15 +16,33 @@ class ProjectService extends Service
         $status = $this->array('status');
         $keyword = $this->pg('keyword');
         $responsibility_person_id = $this->pg('responsibility_person_id');
-        $begin_date = $this->pg('begin_date');
-        $end_date = $this->pg('end_date');
-        $corret_end_date = Carbon::createFromTimeString($end_date)->addDay()->startOfDay()->toDateString();
+        
+        $create_time_begin_time = $this->pg('create_time_begin_time');
+        $create_time_end_time = $this->pg('create_time_begin_time');
+        $corret_create_end_time = $create_time_end_time ? Carbon::createFromTimeString($create_time_end_time)->endOfDay()->toDateTimeString() : null;
+
+        $update_time_begin_time = $this->pg('update_time_begin_time');
+        $update_time_end_time = $this->pg('update_time_begin_time');
+        $corret_update_end_time = $update_time_end_time ? Carbon::createFromTimeString($update_time_end_time)->endOfDay()->toDateTimeString() : null;
+
+        $min_amount = $this->pg('min_price');
+        $max_amount = $this->pg('max_price');
+        
+        $min_dev_time_days = $this->pg('min_dev_time_days');
+        $max_dev_time_days = $this->pg('max_dev_time_days');
+
+        $min_maintain_time_days = $this->pg('min_maintain_time_days');
+        $max_maintain_time_days = $this->pg('max_maintain_time_days');
         
         $where = WhereBuilder::builder()
             ->like('p.name|p.source', $keyword)
             ->in('p.status', $status)
             ->eq('p.responsibility_person_id', $responsibility_person_id)
-            ->between('p.create_time', $begin_date, $corret_end_date)
+            ->between('p.create_time', $create_time_begin_time, $corret_create_end_time)
+            ->between('p.update_time', $update_time_begin_time, $corret_update_end_time)
+            ->between('p.pre_dev_time', $min_dev_time_days, $max_dev_time_days)
+            ->between('p.pre_maintain_time', $min_maintain_time_days, $max_maintain_time_days)
+            ->between('p.estimated_amount', $min_amount, $max_amount)
             ->build();
 
         return (new Project)->alias('p')

+ 4 - 4
api/app/common/util/WhereBuilder.php

@@ -173,7 +173,7 @@ class WhereBuilder implements \ArrayAccess
         return $this->where;
     }
 
-    public function offsetSet($offset, $value)
+    public function offsetSet($offset, $value): void
     {
         if (is_null($offset)) {
             $this->where[] = $value;
@@ -182,17 +182,17 @@ class WhereBuilder implements \ArrayAccess
         }
     }
 
-    public function offsetExists($offset)
+    public function offsetExists($offset): bool
     {
         return isset($this->where[$offset]);
     }
 
-    public function offsetUnset($offset)
+    public function offsetUnset($offset): void
     {
         unset($this->where[$offset]);
     }
 
-    public function offsetGet($offset)
+    public function offsetGet($offset): mixed
     {
         return isset($this->where[$offset]) ? $this->where[$offset] : null;
     }

+ 2 - 1
api/composer.json

@@ -29,7 +29,8 @@
         "overtrue/wechat": "^5.0",
         "phpoffice/phpspreadsheet": "^1.28",
         "topthink/think-filesystem": "^2.0",
-        "topthink/think-annotation": "^2.0"
+        "topthink/think-annotation": "^2.0",
+        "topthink/think-worker": "^3.0"
     },
     "require-dev": {
         "symfony/var-dumper": "^4.2",

+ 185 - 1
api/composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "cee12c1ef5c1f3d69be3753f898a163e",
+    "content-hash": "e67d99f810f7e95cd06c57df7eefb15b",
     "packages": [
         {
             "name": "easywechat-composer/easywechat-composer",
@@ -3673,6 +3673,190 @@
                 "source": "https://github.com/top-think/think-orm/tree/v2.0.61"
             },
             "time": "2023-04-20T14:27:51+00:00"
+        },
+        {
+            "name": "topthink/think-worker",
+            "version": "v3.0.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/top-think/think-worker.git",
+                "reference": "9ba54333f337ee2c3f06054bb896bba9696d926c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/top-think/think-worker/zipball/9ba54333f337ee2c3f06054bb896bba9696d926c",
+                "reference": "9ba54333f337ee2c3f06054bb896bba9696d926c",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "ext-fileinfo": "*",
+                "topthink/framework": "^6.0",
+                "workerman/gateway-worker": "^3.0.0",
+                "workerman/workerman": "^3.5.23"
+            },
+            "type": "library",
+            "extra": {
+                "think": {
+                    "services": [
+                        "think\\worker\\Service"
+                    ],
+                    "config": {
+                        "worker": "src/config/worker.php",
+                        "worker_server": "src/config/server.php",
+                        "gateway_worker": "src/config/gateway.php"
+                    }
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "think\\worker\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "liu21st",
+                    "email": "liu21st@gmail.com"
+                }
+            ],
+            "description": "workerman extend for thinkphp6.0",
+            "support": {
+                "issues": "https://github.com/top-think/think-worker/issues",
+                "source": "https://github.com/top-think/think-worker/tree/v3.0.7"
+            },
+            "time": "2022-10-26T08:04:08+00:00"
+        },
+        {
+            "name": "workerman/gateway-worker",
+            "version": "v3.0.22",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/walkor/GatewayWorker.git",
+                "reference": "a615036c482d11f68b693998575e804752ef9068"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/walkor/GatewayWorker/zipball/a615036c482d11f68b693998575e804752ef9068",
+                "reference": "a615036c482d11f68b693998575e804752ef9068",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "workerman/workerman": ">=3.5.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "GatewayWorker\\": "./src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "homepage": "http://www.workerman.net",
+            "keywords": [
+                "communication",
+                "distributed"
+            ],
+            "support": {
+                "issues": "https://github.com/walkor/GatewayWorker/issues",
+                "source": "https://github.com/walkor/GatewayWorker/tree/v3.0.22"
+            },
+            "funding": [
+                {
+                    "url": "https://opencollective.com/walkor",
+                    "type": "open_collective"
+                },
+                {
+                    "url": "https://www.patreon.com/walkor",
+                    "type": "patreon"
+                }
+            ],
+            "time": "2021-12-23T13:13:09+00:00"
+        },
+        {
+            "name": "workerman/workerman",
+            "version": "v3.5.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/walkor/workerman.git",
+                "reference": "fe4fc5ecc44d0410a22214d9e8679e2fc3795f5a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/walkor/workerman/zipball/fe4fc5ecc44d0410a22214d9e8679e2fc3795f5a",
+                "reference": "fe4fc5ecc44d0410a22214d9e8679e2fc3795f5a",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "php": ">=5.3"
+            },
+            "suggest": {
+                "ext-event": "For better performance. "
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Workerman\\": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "walkor",
+                    "email": "walkor@workerman.net",
+                    "homepage": "http://www.workerman.net",
+                    "role": "Developer"
+                }
+            ],
+            "description": "An asynchronous event driven PHP framework for easily building fast, scalable network applications.",
+            "homepage": "http://www.workerman.net",
+            "keywords": [
+                "asynchronous",
+                "event-loop"
+            ],
+            "support": {
+                "email": "walkor@workerman.net",
+                "forum": "http://wenda.workerman.net/",
+                "issues": "https://github.com/walkor/workerman/issues",
+                "source": "https://github.com/walkor/workerman",
+                "wiki": "http://doc.workerman.net/"
+            },
+            "funding": [
+                {
+                    "url": "https://opencollective.com/workerman",
+                    "type": "open_collective"
+                },
+                {
+                    "url": "https://www.patreon.com/walkor",
+                    "type": "patreon"
+                }
+            ],
+            "time": "2022-12-16T02:47:08+00:00"
         }
     ],
     "packages-dev": [

+ 45 - 0
api/config/gateway_worker.php

@@ -0,0 +1,45 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006-2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+// +----------------------------------------------------------------------
+// | Workerman设置 仅对 php think worker:gateway 指令有效
+// +----------------------------------------------------------------------
+return [
+    // 扩展自身需要的配置
+    'protocol'              => 'websocket', // 协议 支持 tcp udp unix http websocket text
+    'host'                  => '0.0.0.0', // 监听地址
+    'port'                  => 2348, // 监听端口
+    'socket'                => '', // 完整监听地址
+    'context'               => [], // socket 上下文选项
+    'register_deploy'       => true, // 是否需要部署register
+    'businessWorker_deploy' => true, // 是否需要部署businessWorker
+    'gateway_deploy'        => true, // 是否需要部署gateway
+
+    // Register配置
+    'registerAddress'       => '127.0.0.1:1236',
+
+    // Gateway配置
+    'name'                  => 'thinkphp',
+    'count'                 => 1,
+    'lanIp'                 => '127.0.0.1',
+    'startPort'             => 2000,
+    'daemonize'             => false,
+    'pingInterval'          => 30,
+    'pingNotResponseLimit'  => 0,
+    'pingData'              => '{"type":"ping"}',
+
+    // BusinsessWorker配置
+    'businessWorker'        => [
+        'name'         => 'BusinessWorker',
+        'count'        => 1,
+        'eventHandler' => '\think\worker\Events',
+    ],
+
+];

+ 30 - 0
api/config/worker.php

@@ -0,0 +1,30 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006-2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// +----------------------------------------------------------------------
+// | Workerman设置 仅对 php think worker 指令有效
+// +----------------------------------------------------------------------
+return [
+    // 扩展自身需要的配置
+    'host'                  => '0.0.0.0', // 监听地址
+    'port'                  => 2346, // 监听端口
+    'root'                  => '', // WEB 根目录 默认会定位public目录
+    'app_path'              => '', // 应用目录 守护进程模式必须设置(绝对路径)
+    'file_monitor'          => false, // 是否开启PHP文件更改监控(调试模式下自动开启)
+    'file_monitor_interval' => 2, // 文件监控检测时间间隔(秒)
+    'file_monitor_path'     => [], // 文件监控目录 默认监控application和config目录
+
+    // 支持workerman的所有配置参数
+    'name'                  => 'thinkphp',
+    'count'                 => 4,
+    'daemonize'             => false,
+    'pidFile'               => '',
+];

+ 55 - 0
api/config/worker_server.php

@@ -0,0 +1,55 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006-2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// +----------------------------------------------------------------------
+// | Workerman设置 仅对 php think worker:server 指令有效
+// +----------------------------------------------------------------------
+return [
+    // 扩展自身需要的配置
+    'protocol'       => 'websocket', // 协议 支持 tcp udp unix http websocket text
+    'host'           => '0.0.0.0', // 监听地址
+    'port'           => 2345, // 监听端口
+    'socket'         => '', // 完整监听地址
+    'context'        => [], // socket 上下文选项
+    'worker_class'   => '', // 自定义Workerman服务类名 支持数组定义多个服务
+
+    // 支持workerman的所有配置参数
+    'name'           => 'thinkphp',
+    'count'          => 4,
+    'daemonize'      => false,
+    'pidFile'        => '',
+
+    // 支持事件回调
+    // onWorkerStart
+    'onWorkerStart'  => function ($worker) {
+
+    },
+    // onWorkerReload
+    'onWorkerReload' => function ($worker) {
+
+    },
+    // onConnect
+    'onConnect'      => function ($connection) {
+
+    },
+    // onMessage
+    'onMessage'      => function ($connection, $data) {
+        $connection->send('receive success');
+    },
+    // onClose
+    'onClose'        => function ($connection) {
+
+    },
+    // onError
+    'onError'        => function ($connection, $code, $msg) {
+        echo "error [ $code ] $msg\n";
+    },
+];

+ 0 - 0
api/runtime/.gitignore


+ 1 - 0
h5/package.json

@@ -6,6 +6,7 @@
 	"license": "MIT",
 	"scripts": {
 		"dev": "vite --force --mode development",
+        "dev:workerman": "vite --force --mode workerman",
 		"build": "vite build",
 		"build:test": "set NODE_ENV=test && vite build --mode test ",
 		"build:company": "set NODE_ENV=company && vite build --mode company ",

+ 8 - 10
h5/src/App.vue

@@ -3,16 +3,14 @@
         <router-view v-show="themeConfig.lockScreenTime > 1" v-slot="{ Component }">
             <template v-if="Component">
                 <Transition mode="out-in">
-                    <KeepAlive>
-                        <Suspense>
-                            <!-- 主要内容 -->
-                            <component :is="Component"></component>
-                            <!-- 加载中状态 -->
-                            <template #fallback>
-                                正在加载...
-                            </template>
-                        </Suspense>
-                    </KeepAlive>
+                    <Suspense>
+                        <!-- 主要内容 -->
+                        <component :is="Component"></component>
+                        <!-- 加载中状态 -->
+                        <template #fallback>
+                            正在加载...
+                        </template>
+                    </Suspense>
                 </Transition>
             </template>
             <template v-else>

+ 4 - 0
h5/src/config.ts

@@ -22,6 +22,10 @@ if (env.MODE == "development") {
     config.file = "http://192.168.0.170/project-manager";
     config.host = "http://192.168.0.170/project-manager/index.php";
 }
+if (env.MODE == 'workerman') {
+    config.file = "http://localhost:2346"
+    config.host = "http://localhost:2346"
+}
 if (env.MODE == 'release') {
 	//本地
 	config.file = 'http://192.168.0.83:5252';

+ 22 - 15
h5/src/main.ts

@@ -1,21 +1,28 @@
-import { createApp } from 'vue';
-import pinia from '/@/stores/index';
-import App from './App.vue';
-import router from './router';
-import { directive } from '/@/directive/index';
-import { i18n } from '/@/i18n/index';
-import other from '/@/utils/other';
+import { createApp } from 'vue'
+import pinia from '/@/stores/index'
+import App from './App.vue'
+import router from './router'
+import { directive } from '/@/directive/index'
+import { i18n } from '/@/i18n/index'
+import other from '/@/utils/other'
 
-import ElementPlus from 'element-plus';
-import 'element-plus/dist/index.css';
-import '/@/theme/index.scss';
-import VueGridLayout from 'vue-grid-layout';
+import ElementPlus from 'element-plus'
+import 'element-plus/dist/index.css'
+import '/@/theme/index.scss'
+import VueGridLayout from 'vue-grid-layout'
 
-const app = createApp(App);
+const app = createApp(App)
 
-directive(app);
-other.elSvg(app);
+directive(app)
+other.elSvg(app)
 /*导入 vue-vuecmf-dialog  组件*/
 import VuecmfDialog from "vue-vuecmf-dialog"
 
-app.use(pinia).use(router).use(ElementPlus, { i18n: i18n.global.t }).use(i18n).use(VueGridLayout).use(VuecmfDialog).mount('#app');
+app
+    .use(pinia)
+    .use(router)
+    .use(ElementPlus)
+    .use(i18n)
+    .use(VueGridLayout)
+    .use(VuecmfDialog)
+    .mount('#app')

+ 15 - 0
h5/src/utils/moneyHelper.tsx

@@ -0,0 +1,15 @@
+import { defineComponent } from "vue"
+
+export const money = defineComponent({
+    props: ['money'],
+    render: (props) => 
+        <el-tooltip content={props.money + '分'} placement="right" effect="light">
+            <el-tag effect="plain">{props.money / 100}元</el-tag>
+        </el-tooltip>
+}
+
+)
+// <el-tool-tip content={props.money + '分'}><el-text type="primary">{props.money / 100}元</el-text></el-tool-tip>
+
+
+export const getMoneyCent = (money: number) => money * 100

+ 0 - 3
h5/src/utils/use/useDialog.ts

@@ -1,3 +0,0 @@
-export const useDialog = () => {
-    
-}

+ 0 - 1
h5/src/views/admin/admin/import.vue

@@ -117,7 +117,6 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			res = await Department.import(state.ruleForm);
 			if (res.code != 0) {
 				closeDialog();
-				ElMessage.error(res.msg);
 				return;
 			}
 			state.isTips = false;

+ 0 - 6
h5/src/views/admin/admin/index.vue

@@ -179,7 +179,6 @@ const search = async () => {
 const init = async () => {
 	let res = await Admin.init();
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	data.roleList = res.data.roleList;
@@ -190,7 +189,6 @@ const getList = async () => {
 	const res = await Admin.list(data.params);
 	data.loading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	data.tableData = res.data.data;
@@ -225,7 +223,6 @@ const edit = async (item: any) => {
 const detail = async (id: number | string) => {
 	let res = await Admin.detail(id);
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	data.form = res.data;
@@ -249,7 +246,6 @@ const submitForm = (formEl: FormInstance | undefined) => {
 		}
 		data.dialog.isLoading = false;
 		if (res.code != 0) {
-			ElMessage.error(res.msg);
 			return;
 		}
 		ElMessage.success(res.msg);
@@ -291,7 +287,6 @@ const doDelete = async (ids: string) => {
 	let res = await Admin.delete(ids);
 	data.loading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	await getList();
@@ -307,7 +302,6 @@ const resetPwd = (item: any) => {
 		.then(async ({ value }) => {
 			let res = await Admin.resetPwd(item.id, value);
 			if (res.code != 0) {
-				ElMessage.error(res.msg);
 				return;
 			}
 			ElMessage.success(res.msg);

+ 0 - 9
h5/src/views/data/good.vue

@@ -378,7 +378,6 @@ const enable = async () => {
 	const items = multipleSelection.value.map((item: any) => { item.valid = 1; return item });
 	let res = await Good.edit(items);
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	ElMessage.success(res.msg);
@@ -388,7 +387,6 @@ const forbidden = async () => {
 	const items = multipleSelection.value.map((item: any) => { item.valid = 0; return item });
 	let res = await Good.edit(items);
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	ElMessage.success(res.msg);
@@ -428,7 +426,6 @@ const getAll = async () => {
 	const res = await GoodClass.all();
 	data.loading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	console.log("getAllres", res);
@@ -449,7 +446,6 @@ const getClass = async () => {
 	});
 	data.classLoading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	console.log("getClass", res);
@@ -488,7 +484,6 @@ const getList = async () => {
 	}); //异步请求获取 分页数据,接口返回,0为成功,非0失败
 	data.loading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	data.tableData = res.data.data;
@@ -615,7 +610,6 @@ const submitClassForm = (formEl: FormInstance | undefined) => {
 		}
 		data.classDialog.classIsLoading = false;
 		if (res.code != 0) {
-			ElMessage.error(res.msg);
 			return;
 		}
 		ElMessage.success(res.msg);
@@ -655,7 +649,6 @@ const submitForm = (formEl: FormInstance | undefined) => {
 		}
 		data.dialog.isLoading = false;
 		if (res.code != 0) {
-			ElMessage.error(res.msg);
 			return;
 		}
 		ElMessage.success(res.msg);
@@ -711,7 +704,6 @@ const doClassDelete = async (id: any) => {
 	let res = await GoodClass.delete({ id });
 	data.loading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	await getClass();
@@ -722,7 +714,6 @@ const doDelete = async (id: any) => {
 	let res = await Good.delete({ id });
 	data.loading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	await getList();

+ 6 - 14
h5/src/views/data/repertory.vue

@@ -281,7 +281,11 @@
 						<el-table-column prop="date" label="合同签署日期" width="" />
 						<el-table-column prop="start_date" label="合同开始日期" width="" />
 						<el-table-column prop="end_date" label="合同结束日期" width="" />
-						<el-table-column prop="amount" label="合同金额/元" width="" />
+						<el-table-column prop="amount" label="合同金额/元" width="">
+                            <template #default="{ row }">
+                                <money :money="row.amount" />
+                            </template>
+                        </el-table-column>
 						<el-table-column prop="attachment" label="附件" width="">
 							<template #default="scope">
 								<el-link :href="scope.row.attachment" target="_blank" type="primary">查看附件</el-link>
@@ -397,6 +401,7 @@ import Repertory from '/@/api/model/Repertory'; //gzs:引入模型
 import statusList from '/@/views/data/status';
 import { ElMessage, ElMessageBox, genFileId } from 'element-plus';
 import type { FormInstance } from 'element-plus';
+import { money, getMoneyCent } from '/@/utils/moneyHelper';
 // 定义变量内容
 const storesThemeConfig = useThemeConfig();
 const { themeConfig } = storeToRefs(storesThemeConfig);
@@ -613,7 +618,6 @@ const init = async () => {
 
 	let Repertoryres = await Repertory.all({});
 	if (Repertoryres.code != 0) {
-		ElMessage.error(Repertoryres.msg);
 		return;
 	}
 	data.repertoryList = Repertoryres.data;
@@ -633,7 +637,6 @@ const getList = async () => {
 	});
 	data.loading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	data.tableData = res.data.data;
@@ -656,7 +659,6 @@ const getContractList = async () => {
 	});
 	data.loading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	data.tableContract = res.data.data
@@ -780,7 +782,6 @@ const submitForm = (formEl: FormInstance | undefined) => {
 		}
 		data.dialog.isLoading = false;
 		if (res.code != 0) {
-			ElMessage.error(res.msg);
 			return;
 		}
 		ElMessage.success(res.msg);
@@ -796,7 +797,6 @@ const submitSchedule = async () => {
 	let res = await Repertory.addschedules(data.formList);
 	data.schedule.isLoading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	ElMessage.success(res.msg);
@@ -812,7 +812,6 @@ const submitScheduleUpdate = async () => {
 	let res = await Repertory.editschedules(data.formList);
 	data.schedule.isLoading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	ElMessage.success(res.msg);
@@ -828,7 +827,6 @@ const submitContract = async () => {
 	let res = await Repertory.addcontract(data.formContract);
 	data.contract.isLoading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	ElMessage.success(res.msg);
@@ -844,7 +842,6 @@ const submitContractUpdate = async () => {
 	let res = await Repertory.editcontract(data.formContract);
 	data.contract.isLoading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	ElMessage.success(res.msg);
@@ -860,7 +857,6 @@ const submitStatusForm = async () => {
 	let res = await Repertory.addstatus(data.formStatus);
 	data.statusDialog.isLoading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	ElMessage.success(res.msg);
@@ -876,7 +872,6 @@ const editStatusForm = async () => {
 	let res = await Repertory.editstatus(data.formStatus);
 	data.statusLog.isLoading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	ElMessage.success(res.msg);
@@ -926,7 +921,6 @@ const doDelete = async (ids: any) => {
 	let res = await Repertory.delete(ids);
 	data.loading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	await getList();
@@ -937,7 +931,6 @@ const scheduleDelete = async (ids: any) => {
 	let res = await Repertory.deleteschedules(ids);
 	data.loading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	search();
@@ -950,7 +943,6 @@ const doDeleteContract = async (ids: any) => {
 	let res = await Repertory.deletecontract(ids);
 	data.loading = false;
 	if (res.code != 0) {
-		ElMessage.error(res.msg);
 		return;
 	}
 	search();

+ 2 - 2
h5/src/views/system/message/index.vue

@@ -119,7 +119,7 @@
         let res = await Index.messageEdit(row.id);
         if(res.code != 0){
             state.loading = false;
-            return ElMessage.error(res.msg);
+            return;
         }
         getList();
     }
@@ -150,7 +150,7 @@
         let res = await Index.message(state.param);
         if(res.code != 0){
             state.loading = false;
-            return ElMessage.error(res.msg);
+            return;
         }
         state.tableData = res.data.data;
         state.total = res.data.total;