Merge branch 'dev' of http://git.sinoecare.com/sinoecare/digital_village_v2/dvcp_v2_webapp into dev
This commit is contained in:
		| @@ -1,228 +0,0 @@ | ||||
| <template> | ||||
|   <section class="AppFoundingHundred"> | ||||
|     <ai-list v-if="showList"> | ||||
|       <template #title> | ||||
|         <ai-title title="党史教育" isShowBottomBorder> | ||||
|           <template #rightBtn> | ||||
|             <ai-party :instance="instance" v-model="organizationId" :topOrgId="topOrgId" size="small" | ||||
|                       @origin="changeParty"/> | ||||
|           </template> | ||||
|         </ai-title> | ||||
|       </template> | ||||
|       <template #content> | ||||
|         <ai-search-bar> | ||||
|           <template slot="left"> | ||||
|             <el-button type="primary" icon="iconfont iconAdd" @click="handleAdd">添加</el-button> | ||||
|             <el-select placeholder="类型" size="small" v-model="search.style" clearable | ||||
|                        @change="page.current=1,getList()"> | ||||
|               <el-option | ||||
|                   v-for="(item,index) in dict.getDict('partyEducationType')" | ||||
|                   :key="index" | ||||
|                   :label="item.dictName" | ||||
|                   :value="item.dictValue"> | ||||
|               </el-option> | ||||
|             </el-select> | ||||
|             <el-select placeholder="发布状态" size="small" clearable v-model="search.status" | ||||
|                        @change="page.current=1,getList()"> | ||||
|               <el-option | ||||
|                   v-for="(item,index) in dict.getDict('newsCenterStatus')" | ||||
|                   :key="index" | ||||
|                   :label="item.dictName" | ||||
|                   :value="item.dictValue"> | ||||
|               </el-option> | ||||
|             </el-select> | ||||
|           </template> | ||||
|           <template slot="right"> | ||||
|             <el-input placeholder="标题" size="small" suffix-icon="iconfont iconSearch" v-model="search.title"></el-input> | ||||
|             <el-button type="primary" icon="iconfont iconSearch" size="small" @click="page.current=1,getList()">查询 | ||||
|             </el-button> | ||||
|             <el-button icon="el-icon-refresh-right" size="small" @click="page.current=1,search={},getList()">重置</el-button> | ||||
|           </template> | ||||
|         </ai-search-bar> | ||||
|         <ai-table | ||||
|             :tableData="tableData" | ||||
|             :col-configs="colConfigs" | ||||
|             stripe | ||||
|             :total="total" | ||||
|             :current.sync="page.current" | ||||
|             :size.sync="page.size" | ||||
|             style="margin-top: 10px;" | ||||
|             @getList="getList"> | ||||
|           <el-table-column slot="options" label="操作" align="center"> | ||||
|             <div slot-scope="{row}"> | ||||
|               <el-button type="text" icon="iconfont iconChange" :title="row.status==1?'取消发布':'发布'" | ||||
|                          @click="handleChange(row)"/> | ||||
|               <el-button type="text" icon="iconfont iconShow" title="详情" | ||||
|                          @click="handleDetail(row)"/> | ||||
|               <el-button type="text" icon="iconfont iconEdit" title="编辑" | ||||
|                          @click="handleEdit(row)"/> | ||||
|               <el-button type="text" icon="iconfont iconDelete" title="删除" | ||||
|                          @click="handleDelete(row.id)"/> | ||||
|             </div> | ||||
|           </el-table-column> | ||||
|         </ai-table> | ||||
|       </template> | ||||
|     </ai-list> | ||||
|     <component :is="comp" v-else :row="row" :instance="instance" :dict="dict" :permissions="permissions" @back="back" | ||||
|                :isEdit="isEdit" :organizationId="organizationId" :organizationName="organizationName"></component> | ||||
|   </section> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import partyAdd from "./components/partyAdd"; | ||||
| import {mapState} from "vuex"; | ||||
|  | ||||
| export default { | ||||
|   name: "AppPartyHistoryEducation", | ||||
|   label: "党史教育", | ||||
|   components: {partyAdd}, | ||||
|   props: { | ||||
|     instance: Function, | ||||
|     dict: Object, | ||||
|     permissions: Function | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       comp: "", | ||||
|       tableData: [], | ||||
|       total: 0, | ||||
|       row: {}, | ||||
|       showList: true, | ||||
|       search: {}, | ||||
|       isEdit: false, | ||||
|       topOrgId: "", | ||||
|       partyList: [], | ||||
|       treeData: [], | ||||
|       organizationId: "", | ||||
|       organizationName: "", | ||||
|       page: { | ||||
|         current: 1, | ||||
|         size: 10 | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   computed: { | ||||
|     ...mapState(["user"]), | ||||
|     colConfigs() { | ||||
|       return [ | ||||
|         {label: "类型", render: (h, {row}) => [<span>{this.dict.getLabel('partyEducationType', row.style)}</span>]}, | ||||
|         {label: "标题", prop: "title"}, | ||||
|         {label: "发布状态", render: (h, {row}) => [<span>{this.dict.getLabel('newsCenterStatus', row.status)}</span>]}, | ||||
|         {label: "发布时间", prop: "createDate"}, | ||||
|         {label: "发布人", prop: "createUser"}, | ||||
|         {label: "发布组织", prop: "organizationName"}, | ||||
|         {slot: "options"} | ||||
|       ]; | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     handleDetail(row) { | ||||
|       this.row = row; | ||||
|       this.showList = false; | ||||
|       this.comp = "partyAdd"; | ||||
|     }, | ||||
|     changeParty(e) { | ||||
|       if (!e.length) return | ||||
|       this.organizationName = e[0]?.name; | ||||
|       this.resetSearch(); | ||||
|     }, | ||||
|     handleEdit(row) { | ||||
|       this.row = row; | ||||
|       this.showList = false; | ||||
|       this.isEdit = true; | ||||
|       this.comp = "partyAdd"; | ||||
|     }, | ||||
|     resetSearch() { | ||||
|       this.page.current = 1; | ||||
|       this.getList(); | ||||
|     }, | ||||
|     handleDelete(id) { | ||||
|       this.$confirm("是否确定要删除?").then(_ => { | ||||
|         this.instance.post("/app/apppartyeducation/delete", null, { | ||||
|           params: { | ||||
|             ids: id, | ||||
|           } | ||||
|         }).then(res => { | ||||
|           if (res.code == 0) { | ||||
|             this.$message.success("删除成功"); | ||||
|             this.getList(); | ||||
|           } | ||||
|         }) | ||||
|       }) | ||||
|     }, | ||||
|     handleChange(row) { | ||||
|       this.$confirm(`是否确定要${row.status == 0 ? '发布' : '取消发布'}?`).then(_ => { | ||||
|         this.instance.post("/app/apppartyeducation/updateCountYardstatus", { | ||||
|           id: row.id, | ||||
|           status: row.status == 0 ? 1 : 0 | ||||
|         }).then(res => { | ||||
|           if (res.code == 0) { | ||||
|             this.$message.success(`${row.status == 0 ? '发布' : '取消发布'}成功`); | ||||
|             this.getList(); | ||||
|           } | ||||
|         }) | ||||
|       }) | ||||
|     }, | ||||
|     back() { | ||||
|       this.comp = ""; | ||||
|       this.showList = true; | ||||
|       this.isEdit = false; | ||||
|       this.getList(); | ||||
|     }, | ||||
|     handleAdd() { | ||||
|       this.comp = "partyAdd"; | ||||
|       this.showList = false; | ||||
|       this.isEdit = true; | ||||
|       this.row = {}; | ||||
|     }, | ||||
|     // 查询所有单位 树形结构 | ||||
|     searchSysAll(id) { | ||||
|       this.instance.post('/admin/partyOrganization/queryAllChildren', null, { | ||||
|         params: { | ||||
|           id: id | ||||
|         } | ||||
|       }).then((res) => { | ||||
|         if (res?.data) { | ||||
|           res.data = res.data.map(a => { | ||||
|             return {...a, label: a.name} | ||||
|           }); | ||||
|           this.treeData = res.data.filter(e => e.id == this.user.info.organizationId); | ||||
|           this.treeData.map(t => this.addChild(t, res.data)); | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     // 点击树节点 | ||||
|     handleNodeClick(data) { | ||||
|       this.partyList = data; | ||||
|     }, | ||||
|     getList() { | ||||
|       this.instance.post("/app/apppartyeducation/list", null, { | ||||
|         params: { | ||||
|           ...this.page, | ||||
|           ...this.search, | ||||
|         } | ||||
|       }).then(res => { | ||||
|         if (res?.data) { | ||||
|           this.tableData = res.data.records; | ||||
|           this.total = res.data.total; | ||||
|         } | ||||
|       }) | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|     this.topOrgId = this.user.info.organizationId; | ||||
|     this.searchSysAll(this.user.info.organizationId); | ||||
|     this.organizationId = this.user.info.organizationId; | ||||
|     this.organizationName = this.user.info.organizationName; | ||||
|     this.dict.load("newsCenterStatus", "partyEducationType"); | ||||
|     this.getList(); | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| .AppFoundingHundred { | ||||
|   height: 100%; | ||||
|  | ||||
| } | ||||
| </style> | ||||
| @@ -1,290 +0,0 @@ | ||||
| <template> | ||||
|   <section class="add_Party" :class="{isDetail:!isEdit}"> | ||||
|     <ai-detail> | ||||
|       <ai-title slot="title" :title="detailTitle" isShowBottomBorder isShowBack @onBackClick="$emit('back')"> | ||||
|         <!--        <template #rightBtn v-if="$route.query.id&&!isEdit">--> | ||||
|         <!--          <el-button size="small" type="primary" icon="iconfont iconEdit"--> | ||||
|         <!--                     @click="$router.push({...$route,hash:'#add'})">编辑--> | ||||
|         <!--          </el-button>--> | ||||
|         <!--          <el-button size="small" icon="iconfont iconDelete" type="danger" plain--> | ||||
|         <!--                     @click="handleDelete($route.query.id)">删除--> | ||||
|         <!--          </el-button>--> | ||||
|         <!--        </template>--> | ||||
|       </ai-title> | ||||
|       <template #content> | ||||
|         <div class="detail-content" v-if="isEdit"> | ||||
|           <el-form :model="form" label-width="120px" ref="ruleForm" :rules="rules"> | ||||
|             <el-form-item label="标题" prop="title"> | ||||
|               <el-input size="small" v-model="form.title" clearable placeholder="请输入..." maxlength="100" | ||||
|                         show-word-limit/> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="类型" prop="style"> | ||||
|               <ai-select v-model="form.style" :selectList="dict.getDict('partyEducationType')" @change="handleChange"/> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="发布组织" prop="organizationName"> | ||||
|               <el-input size="small" v-model="form.organizationName" clearable placeholder="请输入..." maxlength="100" | ||||
|                         show-word-limit/> | ||||
|             </el-form-item> | ||||
| <!--            <el-form-item label="音频" prop="audioUrl" v-if="['0','1'].includes(form.style)">--> | ||||
| <!--              <el-input v-model="form.audioUrl" placeholder="请输入..." size="small"></el-input>--> | ||||
| <!--            </el-form-item>--> | ||||
|             <el-form-item label="正文" prop="content"> | ||||
|               <ai-editor v-model="form.content" :instance="instance"/> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="缩略图"> | ||||
|               <ai-uploader | ||||
|                 :instance="instance" | ||||
|                 v-model="form.thumbUrl" | ||||
|                 :limit="1" | ||||
|                 :cropOps="cropOps" | ||||
|                 is-crop> | ||||
|                 <template slot="tips">图片比例:1.6:1</template> | ||||
|               </ai-uploader> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="发布日期" prop="publishDate" v-if="form.style==2"> | ||||
|               <el-date-picker | ||||
|                 size="small" | ||||
|                 v-model="form.publishDate" | ||||
|                 placeholder="请选择" | ||||
|                 type="date" | ||||
|                 value-format="yyyy-MM-dd"> | ||||
|               </el-date-picker> | ||||
|             </el-form-item> | ||||
|           </el-form> | ||||
|         </div> | ||||
|         <!--详情--> | ||||
|         <div class="village_detail" v-else> | ||||
|           <div class="village_title"> | ||||
|             <h3>{{ form.title }}</h3> | ||||
|             <el-row type="flex" justify="space-between"> | ||||
|              <el-col :span="8" style="font-size: 14px;color: #333333"> | ||||
|                类型:{{dict.getLabel('partyEducationType',form.style)}} | ||||
|              </el-col> | ||||
|              <el-col :span="8" style="font-size: 14px;color: #333333"> | ||||
|                发文组织:{{form.organizationName}} | ||||
|              </el-col> | ||||
|              <el-col :span="8" style="font-size: 14px;color: #333333"> | ||||
|                <span v-if="form.publishDate">发文日期:{{form.publishDate}}</span> | ||||
|              </el-col> | ||||
|             </el-row> | ||||
|           </div> | ||||
|           <img class="cover" :src="form.thumbUrl[0].url" v-if="form.thumbUrl && form.thumbUrl.length"> | ||||
|           <div class="village_cont" v-html="form.content"/> | ||||
|         </div> | ||||
|       </template> | ||||
|       <template #footer v-if="isEdit"> | ||||
|         <el-button size="small" @click="$emit('back')">取消</el-button> | ||||
|         <el-button type="primary" size="small" @click="saveAdd(0)">保存</el-button> | ||||
|         <el-button type="primary" size="small" @click="saveAdd(1)">保存并发布</el-button> | ||||
|       </template> | ||||
|     </ai-detail> | ||||
|   </section> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|   export default { | ||||
|     name: "partyAdd", | ||||
|     props: { | ||||
|       instance: Function, | ||||
|       dict: Object, | ||||
|       permissions: Function, | ||||
|       row: Object, | ||||
|       isEdit: Boolean, | ||||
|     }, | ||||
|     computed: { | ||||
|       detailTitle() { | ||||
|         return this.isEdit ? '编辑党史教育' : '党史教育详情' | ||||
|       } | ||||
|     }, | ||||
|     data() { | ||||
|       return { | ||||
|         form: { | ||||
|           organizationName: '', | ||||
|           // audioUrl: "", | ||||
|           publishDate: "", | ||||
|           title: '', | ||||
|           style: '', | ||||
|           content: '', | ||||
|           thumbUrl: [] | ||||
|         }, | ||||
|         rules: { | ||||
|           title: [{required: true, message: "请填写标题"}], | ||||
|           style: [{required: true, message: "请选择类型", trigger: "change"}], | ||||
|           organizationName: [{required: true, message: "请输入发布组织"}], | ||||
|           content: [{required: true, message: "请输入正文"}], | ||||
|           publishDate: [{required: true, message: "请选发布日期", trigger: "change"}], | ||||
|         }, | ||||
|         isDetail: true, | ||||
|         count: 0, | ||||
|         cropOps: { | ||||
|           width: "336px", | ||||
|           height: "210px" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     methods: { | ||||
|       handleChange(e) { | ||||
|         if (e == 1 || e == 2) { | ||||
|           this.form.publishDate = ""; | ||||
|         } | ||||
|         // if (e == 2) { | ||||
|         //   this.form.audioUrl == ""; | ||||
|         // } | ||||
|       }, | ||||
|       // 保存 | ||||
|       saveAdd(status) { | ||||
|         this.$refs.ruleForm.validate(v => { | ||||
|           if (v) { | ||||
|             this.instance.post('/app/apppartyeducation/addOrUpdate', { | ||||
|               ...this.form, | ||||
|               status, | ||||
|               thumbUrl: this.form.thumbUrl.length ? JSON.stringify([{ | ||||
|                 url: this.form.thumbUrl[0].url | ||||
|               }]) : '' | ||||
|             }).then((res) => { | ||||
|               if (res && res.code == 0) { | ||||
|                 this.row?.id ? this.$message.success('修改成功') : this.$message.success('添加成功'); | ||||
|                 this.$emit("back"); | ||||
|               } | ||||
|             }) | ||||
|           } | ||||
|         }) | ||||
|       }, | ||||
|       // 详情 | ||||
|       checkDetaiList(id) { | ||||
|         id && this.instance.post('/app/apppartyeducation/queryDetailById', null, { | ||||
|           params: {id} | ||||
|         }).then((res) => { | ||||
|           if (res?.data) { | ||||
|             this.form = res.data; | ||||
|             this.form.thumbUrl = res.data.thumbUrl ? JSON.parse(res.data.thumbUrl) : [] | ||||
|           } | ||||
|         }) | ||||
|       }, | ||||
|       handleDelete(ids) { | ||||
|         this.$confirm('确定删除该文章吗').then(() => { | ||||
|           this.instance.post('/app/apppartyhistory/delete', null, { | ||||
|             params: {ids} | ||||
|           }).then(res => { | ||||
|             if (res?.code == 0) { | ||||
|               this.isAdd = false; | ||||
|               this.isDetailEdit = false; | ||||
|               this.$message.success('删除成功'); | ||||
|             } | ||||
|           }) | ||||
|         }) | ||||
|       }, | ||||
|     }, | ||||
|     created() { | ||||
|       this.dict.load('partyEducationType') | ||||
|       this.checkDetaiList(this.row?.id); | ||||
|     }, | ||||
|   } | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
|   .cover { | ||||
|     display: block; | ||||
|     width: 300px; | ||||
|     height: 140px; | ||||
|     margin: 20px auto; | ||||
|   } | ||||
|  | ||||
|   .add_Party { | ||||
|     height: 100%; | ||||
|     position: relative; | ||||
|     background: #fff; | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|  | ||||
|     .detail-content { | ||||
|       padding-bottom: 80px; | ||||
|     } | ||||
|  | ||||
|     .el-form { | ||||
|       width: 760px; | ||||
|       margin: 18px auto 64px; | ||||
|       // overflow-x: auto; | ||||
|       // overflow-y: auto; | ||||
|       padding-right: 3px !important; | ||||
|  | ||||
|       .el-form-item { | ||||
|         margin-bottom: 18px; | ||||
|       } | ||||
|  | ||||
|       .upload-tip { | ||||
|         position: absolute; | ||||
|         text-align: left; | ||||
|         left: 100px; | ||||
|         top: 5px; | ||||
|  | ||||
|         li { | ||||
|           color: #888; | ||||
|           font-size: 12px; | ||||
|           line-height: 14px; | ||||
|         } | ||||
|  | ||||
|         b { | ||||
|           color: red; | ||||
|           font-size: 14px | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     .village_detail { | ||||
|       margin-top: 16px; | ||||
|       width: 760px; | ||||
|       overflow-y: auto; | ||||
|       border: 1px solid #eee; | ||||
|       border-radius: 4px; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       background: #fff; | ||||
|  | ||||
|       .village_title { | ||||
|         padding: 24px; | ||||
|         border-bottom: 1px solid #eee; | ||||
|  | ||||
|         h3, p { | ||||
|           text-align: center; | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       .village_file { | ||||
|         display: flex; | ||||
|         border-bottom: 1px solid #eee; | ||||
|         padding: 8px 20px; | ||||
|  | ||||
|         span { | ||||
|           width: 60px; | ||||
|         } | ||||
|  | ||||
|         div { | ||||
|           flex: 1; | ||||
|         } | ||||
|  | ||||
|         .fileSty { | ||||
|           color: #999; | ||||
|           font-size: 14px; | ||||
|           cursor: pointer; | ||||
|           margin-bottom: 4px; | ||||
|         } | ||||
|  | ||||
|         .fileSty:hover { | ||||
|           color: #5088FF; | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       .village_cont { | ||||
|         flex: 1; | ||||
|         padding: 30px 20px; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     &.isDetail { | ||||
|       ::v-deep .ai-detail__content { | ||||
|         background: #f3f6f9; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| </style> | ||||
		Reference in New Issue
	
	Block a user