Quellcode durchsuchen

Init ReportTemplate

warr.qian vor 2 Jahren
Ursprung
Commit
bd4dc51290

+ 3 - 0
package-lock.json

@@ -0,0 +1,3 @@
+{
+  "lockfileVersion": 1
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 16629
src/ClientApp/package-lock.json


+ 3 - 0
src/ClientApp/src/assets/icons/ReportTemplate.vue

@@ -0,0 +1,3 @@
+<template>
+    <svg t="1653282965401" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="25912" width="200" height="200"><path d="M853.333333 85.333333a128 128 0 0 1 128 128v85.333334h-85.333333v512a128 128 0 0 1-128 128H170.666667a128 128 0 0 1-128-128v-85.333334h682.666666v85.333334a42.666667 42.666667 0 0 0 37.674667 42.368L768 853.333333a42.666667 42.666667 0 0 0 42.368-37.674666L810.666667 810.666667V170.666667H256a42.666667 42.666667 0 0 0-42.368 37.674666L213.333333 213.333333v426.666667H128V213.333333a128 128 0 0 1 128-128h597.333333z" p-id="25913"></path></svg>
+</template>

+ 3 - 0
src/ClientApp/src/assets/icons/ReportTemplateList.vue

@@ -0,0 +1,3 @@
+<template>
+    <svg t="1653283795416" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="26057" width="200" height="200"><path d="M853.333333 85.333333a128 128 0 0 1 128 128v85.333334h-85.333333v512a128 128 0 0 1-128 128H170.666667a128 128 0 0 1-128-128v-85.333334h682.666666v85.333334a42.666667 42.666667 0 0 0 37.674667 42.368L768 853.333333a42.666667 42.666667 0 0 0 42.368-37.674666L810.666667 810.666667v-170.666667H128V213.333333a128 128 0 0 1 128-128h597.333333z" p-id="26058"></path></svg>
+</template>

+ 2 - 0
src/ClientApp/src/assets/icons/index.js

@@ -37,4 +37,6 @@ export { default as OperateCancelShare } from './OperateCancelShare.vue'
 export { default as Template } from './Template.vue'
 export { default as Thesaurus } from './Thesaurus.vue'
 export { default as ThesaurusList } from './ThesaurusList.vue'
+export { default as ReportTemplate } from './ReportTemplate.vue'
+export { default as ReportTemplateList } from './ReportTemplateList.vue'
 

+ 32 - 0
src/ClientApp/src/config/route.js

@@ -186,6 +186,38 @@ const routes = [
 			}
 		}
         ]
+	},
+	{
+		name: "reportTemplateManage",
+		path: "/reportTemplateManage",
+		meta: {
+			icon: "sc-icon-reportTemplate",
+			title: $t('menu.reportTemplateManage'),
+			role: ["RPMG"]
+		},
+		children: [
+			{
+				name: "reportTemplateIndex",
+				path: "/reportTemplateManage/reportTemplateIndex",
+				component: "reportTemplateManage/reportTemplateIndex",
+				meta: {
+					icon: "sc-icon-reportTemplate-list",
+					title: $t('menu.reportTemplateIndex'),//"词库列表",
+					role: ["RPMGI"]
+				}
+			},
+			{
+				name: "reportTemplateDetail",
+				path: "/reportTemplateManage/reportTemplateDetail",
+				component: "reportTemplateManage/reportTemplateDetail",
+				meta: {
+					icon: "sc-icon-reportTemplate",
+					hidden: true,
+					title: $t('menu.reportTemplateDetail'),//"词条列表",
+					role: ["RPMGAD"]
+				}
+			}
+        ]
 	}
 ]
 

+ 14 - 0
src/ClientApp/src/locales/lang/en.js

@@ -223,6 +223,8 @@ export default {
 		templateManage: "Template Manage",
 		thesaurusItemIndex: "Thesaurus Item",
 		thesaurusIndex: "Thesaurus Template",
+		reportTemplateManage: "Report Template",
+		reportTemplateIndex:"Report Template Index"
 	},
 	device : {
 		Title:"Device",
@@ -306,5 +308,17 @@ export default {
 		thesaurusItemList: "Thesaurus Item List",
 		editCurrentItemPlaceholder:"Edit Current Thesaurus Item",
 		loadthesaurusItemDetailError:"Loading Thesaurus Item Detail Error"
+	},	
+	reportTemplate:{
+		reportTemplateDetail:"Report template detail",
+		name:"Name",
+		reportTemplateName:"Report template name",
+		reportTemplateNameRequire: "Please input report template name",
+		usageType:"Apply group",
+		state:"State",
+		defaultReportTemplate:"Default report template",
+		language:"Language",
+		usageType0: "Person",
+		usageType1: "Animal",
 	}
 }

+ 14 - 0
src/ClientApp/src/locales/lang/zh-cn.js

@@ -224,6 +224,8 @@ export default {
 		templateManage: "模板管理",
 		thesaurusItemIndex: "词条",
 		thesaurusIndex: "词条库模板",
+		reportTemplateManage: "报告模板管理",
+		reportTemplateIndex:"报告模板首页"
 	},
 	device: {
 		Title: "设备",
@@ -307,5 +309,17 @@ export default {
 		thesaurusItemList: "词条列表",
 		editCurrentItemPlaceholder:"点击此编辑词条",
 		loadthesaurusItemDetailError:"加载词条详情异常"
+	},
+	reportTemplate:{
+		reportTemplateDetail:"报告模板详情",
+		name:"名称",
+		reportTemplateNameRequire: "请输入报告模板名",
+		reportTemplateName:"报告模板名",
+		usageType:"服务对象",
+		state:"状态",
+		defaultReportTemplate:"默认报告模板",
+		language:"语言配置",
+		usageType0: "人用",
+		usageType1: "兽用",
 	}
 }

+ 121 - 0
src/ClientApp/src/views/reportTemplateManage/reportTemplateDetail.vue

@@ -0,0 +1,121 @@
+<template>
+  <el-dialog
+    :title="$t(!isEdit ? 'create' : 'edit')"
+    v-model="visible"
+    :width="500"
+    destroy-on-close
+    @closed="$emit('closed')"
+  >
+    <el-form
+      :model="form"
+      :rules="rules"
+      ref="dialogForm"
+      label-width="100px"
+      :label-position="this.$TOOL.data.get('APP_LANG') == 'en' ? 'top' : 'left'"
+    >
+      <el-form-item :label="$t('reportTemplate.reportTemplateName')" prop="ReportTemplateName">
+        <el-input
+          v-model="form.ThesaurusName"
+          clearable
+          :placeholder="$t('reportTemplate.reportTemplateNameRequire')"
+        ></el-input>
+      </el-form-item>
+      <el-form-item
+        :label="$t('reportTemplate.usageType')"
+        prop="ReportTemplateUsageType"
+      >
+        <el-select v-model="form.ReportTemplateUsageType" style="width: 100%">
+          <el-option :label="$t('reportTemplate.usageType0')" :value="0"></el-option>
+          <el-option :label="$t('reportTemplate.usageType1')" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item :label="$t('reportTemplate.defaultReportTemplate')" prop="IsDefault">
+        <el-radio-group v-model="form.IsDefault" style="width: 100%">
+          <el-radio :label="true">{{ $t("yes") }}</el-radio>
+          <el-radio :label="false">{{ $t("no") }}</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item :label="$t('reportTemplate.language')" prop="LanguageCode">
+        <el-select v-model="form.LanguageCode" style="width: 100%">
+          <el-option :label="$t('zh-CN')" value="zh-CN"></el-option>
+          <el-option :label="$t('en-US')" value="en-US"></el-option>
+        </el-select>
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="visible = false">{{
+        $t("dialogBox.cancelButtonText")
+      }}</el-button>
+      <el-button type="primary" :loading="isSaveing" @click="submit()">{{
+        $t("dialogBox.saveButtonText")
+      }}</el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      isEdit: false,
+      form: {
+        LanguageCode: "zh-CN",
+      },
+      rules: {
+        ReportTemplateName: [
+          {
+            required: true,
+            message: this.$t("reportTemplate.reportTemplateNameRequire"),
+            trigger: "blur",
+          },
+        ],
+        ReportTemplateUsageType: [
+          {
+            required: true,
+            message: this.$t("reportTemplate.reportTemplateUsageTypeRequire"),
+            trigger: "blur",
+          },
+        ],
+      },
+      visible: false,
+      isSaveing: false,
+    };
+  },
+  methods: {
+    //显示
+    open(isEdit = false) {
+      this.isEdit = isEdit;
+      this.visible = true;
+      this.form.IsDefault = false;
+      this.form.LanguageCode = "zh-CN";
+      return this;
+    },
+    //表单提交方法
+    submit() {
+      this.$refs.dialogForm.validate(async (valid) => {
+        if (valid) {
+          this.isSaveing = true;
+          await this.$API.wing.post("SaveReportTemplateAsync", this.form, () => {
+            this.$emit("success");
+            this.$message.success(this.$t("response.operateSuccess"));
+            this.visible = false;
+          });
+          this.isSaveing = false;
+        } else {
+          return false;
+        }
+      });
+    },
+    //表单注入数据
+    async setData(data) {
+      var res = await this.$API.wing.post("FindReportTemplateByCodeAsync", {
+        ReportTemplateCode: data.ReportTemplateCode,
+      });
+      this.form = res;
+    },
+  },
+};
+</script>
+
+<style>
+</style>

+ 207 - 0
src/ClientApp/src/views/reportTemplateManage/reportTemplateIndex.vue

@@ -0,0 +1,207 @@
+<template>
+    <div>
+        <div class="main">
+            <div class="main-search"></div>
+            <div class="main-btns"></div>
+            <div class="main-table"></div>
+            <div class="main-footer"></div>
+        </div>
+        <el-container>
+            <el-header>
+                <div class="left-panel">
+                    <el-button type="primary" icon="el-icon-plus" @click="add">{{
+                            $t("create")
+                    }}</el-button>
+                </div>
+                <div class="right-panel">
+                    <div class="right-panel-search">
+                        <el-input v-model="search.Keyword" clearable :placeholder="$t('pleaseInput')">
+                        </el-input>
+                        <el-button type="primary" icon="el-icon-search" @click="upsearch">{{
+                                $t("query")
+                        }}</el-button>
+                    </div>
+                </div>
+            </el-header>
+            <el-main class="nopadding">
+                <scTable ref="table" :apiObj="apiObj" :pageSize="10" row-key="ReportTemplateCode"
+                    @selection-change="selectionChange" stripe :hideDo="true">
+                    <el-table-column :label="$t('reportTemplate.name')" prop="ReportTemplateName"></el-table-column>
+                    <el-table-column :label="$t('reportTemplate.usageType')" prop="reportTemplateUsageType">
+                        <template #default="scope">
+                            <span>{{
+                                    $t("reportTemplate.usageType" + scope.row.ThesaurusUsageType)
+                            }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column :label="$t('reportTemplate.state')" prop="ReportTemplateStateType">
+                        <template #default="scope">
+                            <span>{{
+                                    $t(
+                                        "reportTemplate.state" +
+                                        (scope.row.ReportTemplateUser.length > 0
+                                            ? "2"
+                                            : scope.row.ReportTemplateStateType)
+                                    )
+                            }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column :label="$t('reportTemplate.defaultReportTemplate')" prop="IsDefault">
+                        <template #default="scope">
+                            <span>{{ $t(scope.row.IsDefault ? "yes" : "no") }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column :label="$t('reportTemplate.language')" prop="LanguageCode">
+                        <template #default="scope">
+                            <span>{{ $t(`${scope.row.LanguageCode || ""}`) }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column :label="$t('operate')" fixed="right" align="center" width="210">
+                        <template #default="scope">
+                            <!-- 编辑 -->
+                            <el-button type="text" size="small" @click="table_edit(scope.row, scope.$index)">{{ $t("edit")
+                            }}</el-button>
+                            <!-- 删除 -->
+                            <el-popconfirm :title="$t('reportTemplate.delTip')" @confirm="table_del(scope.row, scope.$index)">
+                                <template #reference>
+                                    <el-button type="text" size="small" :disabled="scope.row.ReportTemplateUser.length">{{
+                                            $t("delete")
+                                    }}</el-button>
+                                </template>
+                            </el-popconfirm>
+                            <!-- 更多 -->
+                            <el-divider direction="vertical"></el-divider>
+                            <el-dropdown @command="handleCommand">
+                                <el-button type="text" size="small">{{ $t("more")
+                                }}<el-icon class="el-icon--right">
+                                        <el-icon-arrow-down />
+                                    </el-icon>
+                                </el-button>
+                                <template #dropdown>
+                                    <el-dropdown-menu>
+                                        <el-dropdown-item command="table_publish"
+                                            :disabled="scope.row.ThesaurusStateType != 0"
+                                            @click="table_publish(scope.row, scope.$index)">{{ $t("reportTemplate.publish") }}
+                                        </el-dropdown-item>
+                                        <el-dropdown-item command="table_userList" divided
+                                            @click="table_userList(scope.row, scope.$index)">{{ $t("reportTemplate.userList") }}
+                                        </el-dropdown-item>
+                                        <el-dropdown-item command="table_Setting1"
+                                            @click="table_thesaurusItem(scope.row, scope.$index)">{{
+                                                    $t("reportTemplate.reportTemplateItemView")
+                                            }}</el-dropdown-item>
+                                    </el-dropdown-menu>
+                                </template>
+                            </el-dropdown>
+                        </template>
+                    </el-table-column>
+                </scTable>
+            </el-main>
+        </el-container>
+        <save-dialog v-if="dialog.show" ref="saveDialog" @success="refresh" @closed="dialog.show = false"></save-dialog>
+    </div>
+</template>
+<script>
+import saveDialog from "./reportTemplateDetail";
+
+export default {
+    components: {
+        saveDialog,
+    },
+    data() {
+        return {
+            dialog: {
+                show: false,
+                showUserList: false,
+            },
+            apiObj: this.query,
+            search: {
+                Keyword: null,
+            },
+            selection: [],
+            command: true,
+        };
+    },
+    methods: {
+        async query(params) {
+            return await this.$API.wing.list("FindReportTemplatePagesAsync", params);
+        },
+        //搜索
+        upsearch() {
+            this.$refs.table.upData(this.search);
+        },
+        //刷新当前页
+        refresh() {
+            this.$refs.table.refresh();
+        },
+        //增加
+        add() {
+            this.dialog.show = true;
+            this.$nextTick(() => {
+                this.$refs.saveDialog.open();
+            });
+        },
+        handleCommand() {
+            this.command = true;
+        },
+        canCommand() {
+            if (!this.command) {
+                return false;
+            }
+            this.command = false;
+            return true;
+        },
+        //编辑
+        table_edit(row) {
+            this.dialog.show = true;
+            this.$nextTick(() => {
+                this.$refs.saveDialog.open(true).setData(row);
+            });
+        },
+        //发布
+        table_publish(row) {
+            if (row.ReportTemplateStateType != 0 || !this.canCommand()) {
+                return;
+            }
+            this.$confirm(
+                this.$t("reportTemplate.publishTip"),
+                this.$t("reportTemplate.publish"),
+                {
+                    distinguishCancelAndClose: true,
+                    confirmButtonText: this.$t("dialogBox.confirmButtonText"),
+                    cancelButtonText: this.$t("dialogBox.cancelButtonText"),
+                    type: "warning",
+                }
+            )
+                .then(() => {
+                    this.$API.wing.post(
+                        "PublishReportTemplateAsync",
+                        {
+                            ReportTemplateCode: row.ReportTemplateCode,
+                        },
+                        this.refresh
+                    );
+                })
+                .catch(() => { })
+                .finally(() => { });
+        },
+        //删除
+        async table_del(row) {
+            await this.$API.wing.post(
+                "DeleteReportTemplateAsync",
+                {
+                    ReportTemplateCode: row.ReportTemplateCode,
+                },
+                this.refresh
+            );
+        },
+        //表格选择后回调事件
+        selectionChange(selection) {
+            this.selection = selection;
+        },
+    },
+};
+</script>
+
+<style>
+</style>

+ 2 - 2
src/ClientApp/vue.config.js

@@ -13,7 +13,7 @@ module.exports = {
 		port: 2800, //挂载端口
 		proxy: {
 			'/IRegionService': {
-				target: 'http://192.168.6.117/IRegionService',
+				target: 'http://192.168.6.86/IRegionService',
 				ws: true,
 				changeOrigin: true,
 				pathRewrite: {
@@ -21,7 +21,7 @@ module.exports = {
 				}
 			},
 			'/api': {
-				target: 'http://192.168.6.69/IManagementService',
+				target: 'http://192.168.6.86/IManagementService',
 				ws: true,
 				changeOrigin: true,
 				pathRewrite: {

+ 58 - 2
src/Service/ManagementService.cs

@@ -35,14 +35,13 @@ using WingInterfaceLibrary.Request.DBRequest;
 using WingServerCommon.Log;
 using WingInterfaceLibrary.DTO.IdentityApply;
 using WingInterfaceLibrary.DTO.Storage;
-using WingInterfaceLibrary.Request.Authentication;
-using System.IO;
 using WingInterfaceLibrary.Request.Storage;
 using WingServerCommon.Config;
 using WingServerCommon.Config.Parameters;
 using System.Text.RegularExpressions;
 using WingInterfaceLibrary.Request.Examine;
 using WingInterfaceLibrary.DTO.Record;
+using WingInterfaceLibrary.DTO.ReportTemplate;
 
 namespace WingManagementModule.Service
 {
@@ -3159,5 +3158,62 @@ namespace WingManagementModule.Service
             return result;
         }
         #endregion
+
+        #region 报告模板        
+        /// <summary>
+        /// 分页查询报告模板
+        /// </summary>
+        /// <param name="request">分页查询报告模板请求实体</param>
+        /// <returns></returns>
+        public async Task<PageResult<ReportTemplateDTO>> FindReportTemplatePagesAsync(FindReportTemplatePagesRequest request)
+        {
+            CheckToken(request.Token);
+            var result = await _adminDBService.FindReportTemplatePagesAsync(new FindReportTemplatePagesDBRequest
+            {
+                IsDefault = request.IsDefault,
+                UserCode = request.UserCode,
+                ReportTemplateStateType = request.ReportTemplateStateType,
+                ReportTemplateType = request.ReportTemplateType,
+                OrganizationCode = request.OrganizationCode,
+                PersonalCode = request.PersonalCode,
+                LanguageCode = request.LanguageCode,
+                ReportTemplateName = request.ReportTemplateName,
+                CurrentPage = request.PageIndex,
+                PageSize = request.PageSize
+            });
+            return result;
+        }
+
+        /// <summary>
+        /// 添加报告模板
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        public async Task<bool> AddReportTemplateAsync(AddReportTemplateDBRequest request)
+        {
+            return await _adminDBService.AddReportTemplateAsync(request);
+        }
+
+        /// <summary>
+        /// 更新报告模板
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        public async Task<bool> UpdateReportTemplateAsync(UpdateReportTemplateDBRequest request)
+        {
+            return await _adminDBService.UpdateReportTemplateAsync(request);
+        }
+
+        /// <summary>
+        /// 更新报告模板
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        public async Task<bool> RemoveReportTemplateAsync(RemoveReportTemplateDBRequest request)
+        {
+            return await _adminDBService.RemoveReportTemplateAsync(request);
+        }
+
+        #endregion
     }
 }

+ 3 - 0
src/package-lock.json

@@ -0,0 +1,3 @@
+{
+  "lockfileVersion": 1
+}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.