From c83a9d73ab2c3b004b63529e1aec817930f25988 Mon Sep 17 00:00:00 2001 From: "maxiaozhe@alicorns.co.jp" Date: Tue, 25 Jul 2023 01:46:17 +0900 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AE=B5=E9=9A=8E=E9=96=8B?= =?UTF-8?q?=E7=99=BA=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addin.js | 99 +++++++++++++++++++++ backend/Temp/日報設計書.xlsx | Bin 11846 -> 12040 bytes backend/app/api/api_v1/routers/kintone.py | 9 ++ backend/app/core/auth.py | 1 - frontend/README.md | 8 +- frontend/package-lock.json | 74 +++++++++++++++- frontend/package.json | 1 + frontend/quasar.config.js | 3 +- frontend/src/boot/axios.ts | 34 ++++++++ frontend/src/components/AppInfo.vue | 101 ++++++++++++++++++++++ frontend/src/components/DocUpload.vue | 7 +- frontend/src/components/EssentialLink.vue | 9 +- frontend/src/components/models.ts | 27 ++++++ frontend/src/layouts/MainLayout.vue | 45 ++++++++-- frontend/src/pages/IndexPage.vue | 51 +++++------ frontend/src/pages/RuleEditor.vue | 2 +- frontend/src/pages/testQursar.vue | 13 +++ frontend/yarn.lock | 47 +++++++++- 18 files changed, 483 insertions(+), 48 deletions(-) create mode 100644 addin.js create mode 100644 frontend/src/boot/axios.ts create mode 100644 frontend/src/components/AppInfo.vue diff --git a/addin.js b/addin.js new file mode 100644 index 0000000..8b49e96 --- /dev/null +++ b/addin.js @@ -0,0 +1,99 @@ +"use strict"; +const events =[ + "app.record.index.show", + "app.record.index.edit.show" +] + +kintone.events.on(events,(event)=>{ + onRecordIndexEvent(event); + return event; +}); + +function onRecordIndexEvent(event){ + console.log(event.type,event); + return event; +} + + +//レコード表示 +kintone.events.on('app.record.detail.show', (event) => { + showRecode(event); + return event; +}); + +//レコード編集時 +kintone.events.on('app.record.edit.show', (event) => { + showRecodeEdit(event); + return event; +}); + +//新規作成 +kintone.events.on('app.record.create.show', (event) => { + newRecord(event); + return event; +}); + +function showRecode(event){ + console.log("app.record.detail.show",event); + let fld=kintone.app.record.getFieldElement('txtname'); + fld.style.backgroundColor="red"; +} + +function newRecord(event){ + console.log("app.record.create.show",event); + //kintone.app.record.setFieldShown("名前",false); + //let fld = kintone.app.record.getFieldElement("txtname"); + //kintone.app.record.setFieldShown("txtname",false); + kintone.events.on('app.record.create.change.radio', (event)=>{ + radioChnage(event); + return event; + }); +} + +function showList(event){ + console.log("app.record.index.show",event); +} + +function showRecodeEdit(event){ + kintone.events.on('app.record.edit.change.radio', (event)=>{ + radioChnage(event); + return event; + }); + + let record = event.record; + let statusValue =record["radio"].value; + switch (statusValue) { + case "非表示": + kintone.app.record.setFieldShown("txtname",false); + break; + case "無効": + kintone.app.record.setFieldShown("txtname",true); + event.record.txtname.disabled = true; + break; + default: + event.record.txtname.disabled = false; + kintone.app.record.setFieldShown("txtname",true); + break; + } + return event; +} + +function radioChnage(event){ + let changeField =event.changes.field; + let statusValue =changeField.value; + let record = event.record; + switch (statusValue) { + case "非表示": + kintone.app.record.setFieldShown("txtname",false); + break; + case "無効": + kintone.app.record.setFieldShown("txtname",true); + record.txtname.disabled = true; + break; + default: + record.txtname.disabled = false; + kintone.app.record.setFieldShown("txtname",true); + break; + } + return event; +} \ No newline at end of file diff --git a/backend/Temp/日報設計書.xlsx b/backend/Temp/日報設計書.xlsx index b9f01e522ab38f60866344b7e44ea6a0d5f96d71..7898c31fdd9f702617466791098fc6faea4e99e7 100644 GIT binary patch delta 5554 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 delta 5363 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 diff --git a/backend/app/api/api_v1/routers/kintone.py b/backend/app/api/api_v1/routers/kintone.py index 516fb67..67b2823 100644 --- a/backend/app/api/api_v1/routers/kintone.py +++ b/backend/app/api/api_v1/routers/kintone.py @@ -263,6 +263,15 @@ async def allapps(): r = httpx.get(url,headers=headers) return r.json() +@r.get("/app") +async def app(app:str): + headers={c.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE} + url = f"{c.BASE_URL}{c.API_V1_STR}/app.json" + params ={"id":app} + r = httpx.get(url,headers=headers,params=params) + return r.json() + + @r.get("/appfields") async def appfields(app:str): return getfieldsfromkintone(app) diff --git a/backend/app/core/auth.py b/backend/app/core/auth.py index 0b404b2..7af62c4 100644 --- a/backend/app/core/auth.py +++ b/backend/app/core/auth.py @@ -31,7 +31,6 @@ async def get_current_user( raise credentials_exception return user - async def get_current_active_user( current_user: models.User = Depends(get_current_user), ): diff --git a/frontend/README.md b/frontend/README.md index 9a49b60..6d6096c 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -33,8 +33,12 @@ yarn format # or npm run format ``` - - +### Install Quasar/cli +```bash +$ yarn global add @quasar/cli +# or +$ npm install -g @quasar/cli +``` ### Build the app for production ```bash diff --git a/frontend/package-lock.json b/frontend/package-lock.json index e05472f..82d6da2 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "dependencies": { "@quasar/extras": "^1.16.4", + "axios": "^1.4.0", "quasar": "^2.6.0", "vue": "^3.0.0", "vue-router": "^4.0.0" @@ -1135,6 +1136,11 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/autoprefixer": { "version": "10.4.14", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", @@ -1168,6 +1174,16 @@ "postcss": "^8.1.0" } }, + "node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1565,6 +1581,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1776,6 +1803,14 @@ "node": ">=8" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2783,6 +2818,38 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -3618,7 +3685,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -3627,7 +3693,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -4094,6 +4159,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index b0d52a8..f126579 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "@quasar/extras": "^1.16.4", + "axios": "^1.4.0", "quasar": "^2.6.0", "vue": "^3.0.0", "vue-router": "^4.0.0" diff --git a/frontend/quasar.config.js b/frontend/quasar.config.js index fb7b8b0..bcb0fcd 100644 --- a/frontend/quasar.config.js +++ b/frontend/quasar.config.js @@ -32,8 +32,7 @@ module.exports = configure(function (/* ctx */) { // --> boot files are part of "main.js" // https://v2.quasar.dev/quasar-cli-vite/boot-files boot: [ - - + 'axios' ], // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css diff --git a/frontend/src/boot/axios.ts b/frontend/src/boot/axios.ts new file mode 100644 index 0000000..1e22234 --- /dev/null +++ b/frontend/src/boot/axios.ts @@ -0,0 +1,34 @@ +import { boot } from 'quasar/wrappers'; +import axios, { AxiosInstance } from 'axios'; + +declare module '@vue/runtime-core' { + interface ComponentCustomProperties { + $axios: AxiosInstance; + $api: AxiosInstance; + } +} + +// Be careful when using SSR for cross-request state pollution +// due to creating a Singleton instance here; +// If any client changes this (global) instance, it might be a +// good idea to move this instance creation inside of the +// "export default () => {}" function below (which runs individually +// for each client) +const api:AxiosInstance = axios.create({ baseURL: process.env.KAB_BACKEND_URL }); + +export default boot(({ app }) => { + // for use inside Vue files (Options API) through this.$axios and this.$api + + app.config.globalProperties.$axios = axios; + // ^ ^ ^ this will allow you to use this.$axios (for Vue Options API form) + // so you won't necessarily have to import axios in each vue file + + app.config.globalProperties.$api = api; + // ^ ^ ^ this will allow you to use this.$api (for Vue Options API form) + // so you can easily perform requests against your app's API + app.provide('$api',api); + app.provide('$axios',axios); + +}); + +export { api }; diff --git a/frontend/src/components/AppInfo.vue b/frontend/src/components/AppInfo.vue new file mode 100644 index 0000000..22cc51f --- /dev/null +++ b/frontend/src/components/AppInfo.vue @@ -0,0 +1,101 @@ + + + diff --git a/frontend/src/components/DocUpload.vue b/frontend/src/components/DocUpload.vue index cfede92..65c9eb9 100644 --- a/frontend/src/components/DocUpload.vue +++ b/frontend/src/components/DocUpload.vue @@ -15,10 +15,8 @@ diff --git a/frontend/src/pages/RuleEditor.vue b/frontend/src/pages/RuleEditor.vue index 8f6ff1b..c274ec9 100644 --- a/frontend/src/pages/RuleEditor.vue +++ b/frontend/src/pages/RuleEditor.vue @@ -7,7 +7,7 @@ -
+
+
+ +
+ + + diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 33f5678..df4c7cc 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -591,6 +591,11 @@ async@^3.2.3: resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + autoprefixer@^10.4.2: version "10.4.14" resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz" @@ -603,6 +608,15 @@ autoprefixer@^10.4.2: picocolors "^1.0.0" postcss-value-parser "^4.2.0" +axios@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz" + integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" @@ -823,6 +837,13 @@ color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@^2.19.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" @@ -967,6 +988,11 @@ define-lazy-prop@^2.0.0: resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + depd@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" @@ -1367,6 +1393,20 @@ flatted@^3.1.0: resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" @@ -1854,7 +1894,7 @@ micromatch@^4.0.4: resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -2149,6 +2189,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + punycode@^2.1.0: version "2.3.0" resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"