瀏覽代碼

单位,用户角色调整

xiao547607 5 年之前
父節點
當前提交
95458bc2c5

+ 5 - 1
src/api/base/messageNotice.js

@@ -45,6 +45,10 @@ function list() {
   return request.post(constant.serverUrl + "/messageNotice/list");
 }
 
+function sendWechat(formData) {
+  return request.post(constant.serverUrl + "/messageNotice/sendWechat", formData);
+}
+
 export default {
-  create, edit, add, update, remove, batchRemove, pageList, list
+  create, edit, add, update, remove, batchRemove, pageList, list, sendWechat
 }

+ 5 - 1
src/api/base/personRoleInfo.js

@@ -45,6 +45,10 @@ function listByCompanyId(formData){
   return request.post(constant.serverUrl + "/base/personRoleInfo/listByCompanyId", formData);
 }
 
+function findBySceneId(formData){
+  return request.post(constant.serverUrl + "/base/personRoleInfo/findBySceneId", formData);
+}
+
 function findAll(){
   return request.post(constant.serverUrl + "/base/personRoleInfo/findAll");
 }
@@ -69,5 +73,5 @@ function saveRelatedIcon(personRoleId,mode,idList){
 
 export default {
   pageList,create,edit,add,update,remove,batchRemove,listByCompanyId,findAll,
-  findAllIcon,findRelatedIcon,saveRelatedIcon
+  findAllIcon,findRelatedIcon,saveRelatedIcon,findBySceneId
 }

+ 57 - 41
src/views/base/companyInfo-detail.vue

@@ -58,20 +58,6 @@
               ></el-select-tree>
             </el-form-item>
           </el-col>
-          <!-- <el-col :span="12">
-            <el-form-item label="单位性质" prop="type">
-              <el-select v-model="formModel.type" filterable placeholder="请选择" style="width:50%">
-                <el-option
-                  v-for="result in typeData"
-                  :key="result.id"
-                  :label="result.name"
-                  :value="result.value"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-        <el-row>
           <el-col :span="12">
             <el-form-item label="地区" prop="regionId">
               <!-- <el-select v-model="formModel.regionId" filterable placeholder="请选择" style="width:50%">
@@ -90,6 +76,8 @@
               ></el-select-tree>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row>
           <el-col :span="12">
             <el-form-item label="场景值" prop="sceneId">
               <el-select v-model="formModel.sceneId" filterable placeholder="请选择" style="width:50%">
@@ -103,6 +91,30 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-row  v-if="formModel.sceneId == '2'">
+          <el-col :span="12">
+            <el-form-item label="关联单位" prop="relationCompanyId">
+              <el-select-tree
+                :props="props"
+                :options="companyResult"
+                v-model="formModel.relationCompanyId"
+                height="200"
+              ></el-select-tree>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="关联场景" prop="type">
+              <el-select v-model="formModel.type" filterable placeholder="请选择" style="width:50%">
+                <el-option
+                  v-for="result in sceneData"
+                  :key="result.id"
+                  :label="result.sceneName"
+                  :value="result.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row>
           <el-col :span="24">
             <el-form-item label="备注" prop="remark">
@@ -256,38 +268,38 @@ export default {
     });
     
 
-    this.loadTree();
+    //this.loadTree();
   },
   methods: {
-    getSelectedValue(value) {
-      this.formModel.parentId = value;
-    },
-    loadTree() {
-      var formData = new FormData();
-      companyInfoApi.loadChildren(formData).then(resp => {
-        var jsonData = resp.data;
+    // getSelectedValue(value) {
+    //   this.formModel.parentId = value;
+    // },
+    // loadTree() {
+    //   var formData = new FormData();
+    //   companyInfoApi.loadChildren(formData).then(resp => {
+    //     var jsonData = resp.data;
 
-        if (jsonData.result) {
-          this.treeData = jsonData.data;
-        } else {
-          this.$message.error(jsonData.message + "");
-        }
-      });
-    },
-    loadChildren(tree, treeNode, resolve) {
-      var formData = new FormData();
-      formData.append("parentId", tree.id);
+    //     if (jsonData.result) {
+    //       this.treeData = jsonData.data;
+    //     } else {
+    //       this.$message.error(jsonData.message + "");
+    //     }
+    //   });
+    // },
+    // loadChildren(tree, treeNode, resolve) {
+    //   var formData = new FormData();
+    //   formData.append("parentId", tree.id);
 
-      companyInfoApi.loadChildren(formData).then(resp => {
-        var jsonData = resp.data;
+    //   companyInfoApi.loadChildren(formData).then(resp => {
+    //     var jsonData = resp.data;
 
-        if (jsonData.result) {
-          resolve(jsonData.data);
-        } else {
-          this.$message.error(jsonData.message + "");
-        }
-      });
-    },
+    //     if (jsonData.result) {
+    //       resolve(jsonData.data);
+    //     } else {
+    //       this.$message.error(jsonData.message + "");
+    //     }
+    //   });
+    // },
     closeDialog() {
       this.$emit("close", false);
     },
@@ -303,6 +315,10 @@ export default {
               self.formModel.parentId = "";
             }
 
+            if(self.formModel.relationCompanyId == null){
+              self.formModel.relationCompanyId = "";
+            }
+
             if (id == null || id.length == 0) {
               return companyInfoApi.add(self.formModel);
             } else {

+ 61 - 8
src/views/base/messageNotice-detail.vue

@@ -9,15 +9,34 @@
     :visible.sync="showDialog"
     :title="title"
     :modal-append-to-body="false"
-    style="text-align:left;"
+    style="text-align: left"
     :width="'800px'"
     @close="closeDialog"
     :close-on-click-modal="false"
   >
     <div class="user-panel" v-loading="loading">
-      <el-form ref="form" :model="formModel" :rules="ruleValidate" :label-width="'100px'">
+      <el-form
+        ref="form"
+        :model="formModel"
+        :rules="ruleValidate"
+        :label-width="'100px'"
+      >
+        <el-form-item label="类型" prop="title">
+          <el-select
+            v-model="formModel.type"
+            placeholder="请选择"
+            height="200"
+          >
+            <el-option label="站内消息" value="1"></el-option>
+            <el-option label="微信消息" value="2"></el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item label="标题" prop="title">
-          <el-input v-model="formModel.title" placeholder="请输入" style="width:100%"></el-input>
+          <el-input
+            v-model="formModel.title"
+            placeholder="请输入"
+            style="width: 100%"
+          ></el-input>
         </el-form-item>
         <el-form-item label="发送单位" prop="noticeCompany">
           <el-select-tree
@@ -28,7 +47,12 @@
           ></el-select-tree>
         </el-form-item>
         <el-form-item label="接受者类型" prop="noticeType">
-          <el-select v-model="formModel.noticeType" multiple placeholder="请选择" style="width:90%">
+          <el-select
+            v-model="formModel.noticeType"
+            multiple
+            placeholder="请选择"
+            style="width: 90%"
+          >
             <el-option
               v-for="result in popedomData"
               :key="result.id"
@@ -37,6 +61,20 @@
             ></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item label="微信模板ID" prop="wechatCode" v-if="formModel.type == '2'">
+          <el-input
+            v-model="formModel.wechatCode"
+            placeholder="请输入"
+            style="width: 100%"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="链接地址" prop="noticeLink" v-if="formModel.type == '2'">
+          <el-input
+            v-model="formModel.noticeLink"
+            placeholder="请输入"
+            style="width: 100%"
+          ></el-input>
+        </el-form-item>
         <el-form-item label="内容" prop="content">
           <mce-editor
             ref="editor"
@@ -59,7 +97,11 @@
           </el-radio-group>
         </el-form-item>
         <el-form-item label="积分" prop="point">
-          <el-input v-model="formModel.point" placeholder="请输入" style="width:100%"></el-input>
+          <el-input
+            v-model="formModel.point"
+            placeholder="请输入"
+            style="width: 100%"
+          ></el-input>
         </el-form-item>
         <el-form-item label="审核状态" prop="status">
           <el-radio-group v-model="formModel.status">
@@ -67,11 +109,19 @@
             <el-radio :label="false">未审核</el-radio>
           </el-radio-group>
         </el-form-item>
+        <el-form-item label="微信消息推送" prop="sendWechat" v-if="formModel.type == '2'">
+          <el-radio-group v-model="formModel.sendWechat">
+            <el-radio :label="true">已发送</el-radio>
+            <el-radio :label="false">未发送</el-radio>
+          </el-radio-group>
+        </el-form-item>
       </el-form>
     </div>
     <span slot="footer" class="dialog-footer">
       <el-button @click="closeDialog">取 消</el-button>
-      <el-button type="primary" @click="handleSubmit" :loading="submitting">确 定</el-button>
+      <el-button type="primary" @click="handleSubmit" :loading="submitting"
+        >确 定</el-button
+      >
     </span>
   </el-dialog>
 </template>
@@ -89,10 +139,13 @@ export default {
   data() {
     return {
       ruleValidate: {
+        type:[{ required: true, message: "请选择消息类型", trigger: "blur" }],
         title: [{ required: true, message: "标题不能为空", trigger: "blur" }],
         noticeCompany: [
           { required: true, message: "发送单位不能为空", trigger: "blur" },
         ],
+        wechatCode:[{ required: true, message: "模板ID不能为空", trigger: "blur" }],
+        noticeLink:[{ required: true, message: "链接不能为空", trigger: "blur" }],
         noticeType: [{ required: true, message: "不能为空", trigger: "blur" }],
       },
       showDialog: true,
@@ -113,8 +166,8 @@ export default {
         // 配置项(必选)
         value: "id",
         label: "name",
-        children: "children"
-      }
+        children: "children",
+      },
     };
   },
   created() {

+ 100 - 13
src/views/base/messageNotice-list.vue

@@ -13,10 +13,26 @@
     <!--
       要resetFields起作用,必须配置:model和prop
     -->
-    <el-form ref="queryForm" :model="queryModel" inline class="demo-form-inline">
+    <el-form
+      ref="queryForm"
+      :model="queryModel"
+      inline
+      class="demo-form-inline"
+    >
       <el-form-item label="标题" prop="title">
         <el-input type="text" size="mini" v-model="queryModel.title"></el-input>
       </el-form-item>
+      <el-form-item label="类型" prop="title">
+        <el-select
+          v-model="queryModel.type"
+          placeholder="请选择"
+          style="width: 90%"
+        >
+          <el-option label="全部" value=""></el-option>
+          <el-option label="站内消息" value="1"></el-option>
+          <el-option label="微信消息" value="2"></el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item>
         <el-button
           type="primary"
@@ -24,26 +40,36 @@
           icon="ios-search"
           @click="changePage(1)"
           :loading="loading"
-        >查询</el-button>&nbsp;
+          >查询</el-button
+        >&nbsp;
         <el-button
           type="info"
           size="mini"
           style="margin-left: 8px"
           @click="handleReset('queryForm')"
-        >重置</el-button>&nbsp;
+          >重置</el-button
+        >&nbsp;
       </el-form-item>
     </el-form>
     <el-divider></el-divider>
     <el-row class="button-group">
-      <el-button type="primary" size="small" plain icon="el-icon-circle-plus" @click="handleAdd">新增</el-button>
+      <el-button
+        type="primary"
+        size="small"
+        plain
+        icon="el-icon-circle-plus"
+        @click="handleAdd"
+        >新增</el-button
+      >
       <el-button
         type="primary"
         size="small"
         plain
         icon="el-icon-remove"
-        :disabled="multipleSelection.length==0"
+        :disabled="multipleSelection.length == 0"
         @click="handleBatchDelete"
-      >删除选中项</el-button>
+        >删除选中项</el-button
+      >
     </el-row>
     <el-table
       ref="formTable"
@@ -55,17 +81,51 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55"></el-table-column>
-      <el-table-column prop="title" label="发送单位" width="300"></el-table-column>
-      <el-table-column prop="noticeCompany" label="标题" width="300"></el-table-column>
+      <el-table-column prop="type" label="发送类型" width="100">
+        <template slot-scope="{ row }">
+          <span v-if="row.type == 1" style="color: green">站内消息</span>
+          <span v-else-if="row.type == 2" style="color: red">微信</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="title" label="标题" width="300"></el-table-column>
+      <el-table-column
+        prop="noticeCompany"
+        label="接收单位"
+        width="300"
+      ></el-table-column>
       <el-table-column prop="point" label="积分" width="80"></el-table-column>
       <el-table-column prop="status" label="审核" width="120">
-        <template slot-scope="{row}">{{row.status? "已审核" : "未审核"}}</template>
+        <template slot-scope="{ row }">{{
+          row.status ? "已审核" : "未审核"
+        }}</template>
       </el-table-column>
-      <el-table-column prop="createTime" label="发送时间" width="280"></el-table-column>
+      <el-table-column prop="sendWechat" label="发送状态" width="120">
+        <template slot-scope="{ row }">
+          <span v-if="row.type == 2">
+            {{ row.sendWechat ? "已发送微信消息" : "未发送" }}
+          </span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="createTime"
+        label="发送时间"
+        width="280"
+      ></el-table-column>
       <el-table-column label="操作" width="480">
-        <template slot-scope="{row}">
-          <el-button size="mini" type="warning" @click="handleEdit(row)">修改</el-button>
-          <el-button size="mini" type="danger" @click="handleDelete(row)">删除</el-button>
+        <template slot-scope="{ row }">
+          <el-button
+            size="mini"
+            type="primary"
+            @click="sendWechat(row)"
+            v-if="row.type == '2' && row.sendWechat == 0"
+            >发送消息</el-button
+          >
+          <el-button size="mini" type="warning" @click="handleEdit(row)"
+            >修改</el-button
+          >
+          <el-button size="mini" type="danger" @click="handleDelete(row)"
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
@@ -101,6 +161,7 @@ export default {
     return {
       queryModel: {
         title: "",
+        type: "",
       },
       loading: false,
       tableData: [],
@@ -134,6 +195,7 @@ export default {
       formData.append("pageSize", self.pageSize);
 
       formData.append("title", self.queryModel.title);
+      formData.append("type", self.queryModel.type);
 
       if (this.field != null) {
         formData.append("field", this.field);
@@ -250,6 +312,31 @@ export default {
         this.changePage(this.pageIndex);
       }
     },
+    sendWechat(record) {
+      var self = this;
+      var formData = new FormData();
+
+      formData.append("id", record.id);
+      this.$confirm("确认发送微信通知?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(() => {
+        self.loading = true;
+        messageNoticeApi.sendWechat(formData).then(function (response) {
+          var jsonData = response.data;
+
+          if (jsonData.result) {
+            self.changePage(self.pageIndex);
+
+            self.$message({
+              type: "success",
+              message: "发送成功!",
+            });
+          }
+        });
+      });
+    },
   },
   mounted: function () {
     var self = this;

+ 42 - 0
src/views/base/personPopedom-detail.vue

@@ -36,6 +36,16 @@
             height="200"
           ></el-select-tree>
         </el-form-item>
+        <el-form-item label="关联场景" prop="sceneId">
+          <el-select v-model="sceneId" filterable placeholder="请选择">
+            <el-option
+              v-for="result in sceneData"
+              :key="result.id"
+              :label="result.sceneName"
+              :value="result.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item label="身份" prop="personRoleId">
           <el-select
             v-model="formModel.personRoleId"
@@ -92,6 +102,7 @@ import companyInfoApi from "@/api/base/companyInfo";
 import deviceInfoApi from "@/api/base/deviceInfo";
 import companyStructureInfoApi from "@/api/base/companyStructureInfo";
 import iconInfoApi from "@/api/base/iconInfo";
+import sceneInfoApi from "@/api/base/sceneInfo";
 import SelectTree from "@/components/SelectTree";
 import { Breadcrumb } from "element-ui";
 
@@ -131,6 +142,8 @@ export default {
         label: "structureName",
         children: "children",
       },
+      sceneData: [],
+      sceneId: "",
     };
   },
   created() {
@@ -144,6 +157,11 @@ export default {
       }
     });
 
+    sceneInfoApi.list().then((response) => {
+      var jsonData = response.data;
+      this.sceneData = jsonData.data;
+    });
+
     // var formData = new FormData();
     // formData.append("companyId", "c52b03cb-7526-4e8b-8b90-4f7a6a37b586");
     // personRoleInfoApi.listByCompanyId(formData).then(function (response) {
@@ -179,6 +197,30 @@ export default {
             }
           }
         });
+
+        companyInfoApi.edit(val).then((response) => {
+          var jsonData = response.data;
+          if (jsonData.result) {
+            self.sceneId = jsonData.data.sceneId;
+          }
+        });
+      }
+    },
+    "sceneId": function (val, oldval) {
+      if (val != null && val != "") {
+        var self = this;
+        var formData = new FormData();
+        formData.append("sceneId", val);
+      
+        personRoleInfoApi.findBySceneId(formData).then(function (response) {
+          var jsonData = response.data;
+          if (jsonData.result) {
+            if (jsonData.data != null && jsonData.data != "") {
+              self.formModel.personRoleId = "";
+              self.personRoleResult = jsonData.data;
+            }
+          }
+        });
       }
     },
     // "formModel.personRoleId": function (val, oldval) {