飞天云平台-国产化
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

294 lines
12 KiB

3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
  1. <template>
  2. <div class="app-container row-container">
  3. <!--侧边部门数据-->
  4. <!--工具栏-->
  5. <div class="head-container">
  6. <div class="head-search" style="align-items: center;">
  7. <el-select v-model="query.type" clearable size="small" placeholder="栏目类型" class="filter-item" style="width: 160px;" @change="crud.toQuery">
  8. <el-option v-for="item in typeOptions" :key="item.key" :label="item.display_name" :value="item.key" />
  9. </el-select>
  10. <el-input v-model="query.title" size="small" clearable placeholder="输入栏目名称搜索" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
  11. <el-select v-model="query.status" clearable size="small" placeholder="状态" class="filter-item" style="width: 100px" @change="crud.toQuery">
  12. <i slot="prefix" class="iconfont icon-zhuangtai" />
  13. <el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key" />
  14. </el-select>
  15. <rrOperation />
  16. <el-checkbox v-model="query.isContent" label="仅显示内容数量为 0 的栏目" name="fiterColumnZero" @change="crud.toQuery" />
  17. </div>
  18. <crudOperation :permission="permission">
  19. <template v-slot:middle>
  20. <el-button slot="reference" size="mini" :loading="crud.delAllLoading" :disabled="crud.selections.length === 0" @click="toDelete(crud.selections)">
  21. <i class="iconfont icon-shanchu" />
  22. 删除
  23. </el-button>
  24. </template>
  25. <template v-slot:right>
  26. <el-button :loading="crud.downloadLoading" size="mini" :disabled="crud.selections.length === 0" @click="doExport(crud.selections)">
  27. <i class="iconfont icon-daochu" />
  28. 导出
  29. </el-button>
  30. </template>
  31. </crudOperation>
  32. </div>
  33. <div class="container-wrap">
  34. <span class="right-top-line" />
  35. <span class="left-bottom-line" />
  36. <el-dialog :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title">
  37. <span class="dialog-right-top" />
  38. <span class="dialog-left-bottom" />
  39. <div class="setting-dialog">
  40. <el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="110px">
  41. <el-row>
  42. <el-form-item label="栏目名称" prop="title">
  43. <el-input v-model="form.title" style="width: 586px;" />
  44. </el-form-item>
  45. </el-row>
  46. <el-form-item label="栏目编码" prop="code">
  47. <el-input v-model="form.code" />
  48. </el-form-item>
  49. <el-form-item label="栏目类型" prop="type">
  50. <el-select v-model="form.type" placeholder="请选择">
  51. <el-option
  52. v-for="(item,index) in columnTypeOptions"
  53. :key="index"
  54. :label="item.label"
  55. :value="item.value"
  56. />
  57. </el-select>
  58. </el-form-item>
  59. <el-form-item label="排序" prop="seqencing">
  60. <el-input-number
  61. v-model.number="form.seqencing"
  62. :min="0"
  63. :max="999"
  64. controls-position="right"
  65. />
  66. </el-form-item>
  67. <el-form-item label="状态" prop="status">
  68. <el-radio-group v-model="form.status">
  69. <el-radio :label="1">启用</el-radio>
  70. <el-radio :label="0">停用</el-radio>
  71. </el-radio-group>
  72. </el-form-item>
  73. <el-row>
  74. <el-form-item label="备注" prop="remarks">
  75. <el-input v-model="form.remarks" style="width: 586px;" rows="3" type="textarea" />
  76. </el-form-item>
  77. </el-row>
  78. </el-form>
  79. <div slot="footer" class="dialog-footer">
  80. <el-button type="text" @click="crud.cancelCU">取消</el-button>
  81. <el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确定</el-button>
  82. </div>
  83. </div>
  84. </el-dialog>
  85. <el-table ref="table" v-loading="crud.loading" highlight-current-row style="width: 100%;" height="calc(100vh - 330px)" :data="crud.data" @selection-change="crud.selectionChangeHandler">
  86. <el-table-column type="selection" align="center" width="55" />
  87. <el-table-column prop="title" label="栏目名称" />
  88. <el-table-column prop="code" label="栏目编码" />
  89. <el-table-column prop="type" label="栏目类型">
  90. <template slot-scope="scope">
  91. <div v-if="scope.row.type === 1">图文详情</div>
  92. <div v-if="scope.row.type === 2">文字列表-图文详情</div>
  93. <div v-if="scope.row.type === 3">图文列表-图文详情</div>
  94. <div v-if="scope.row.type === 4">图文列表-外部跳转</div>
  95. </template>
  96. </el-table-column>
  97. <el-table-column prop="deptsCount" label="内容数量" />
  98. <el-table-column prop="seqencing" label="排序" align="center" />
  99. <el-table-column label="状态" align="center" prop="status">
  100. <template slot-scope="scope">
  101. <el-switch v-model="scope.row.status" active-color="#409EFF" inactive-color="#F56C6C" :active-value="1" :inactive-value="0" @change="changeStatus(scope.row, scope.row.status)" />
  102. </template>
  103. </el-table-column>
  104. <el-table-column prop="create" label="创建者" />
  105. <el-table-column :show-overflow-tooltip="true" prop="createTime" label="创建日期">
  106. <template slot-scope="scope">
  107. <div>{{ scope.row.createTime | parseTime }}</div>
  108. </template>
  109. </el-table-column>
  110. </el-table>
  111. <!--分页组件-->
  112. <pagination v-if="crud.data.length !== 0" />
  113. </div>
  114. </div>
  115. </template>
  116. <script>
  117. import crudColumn from '@/api/inquiryMachine/column'
  118. import CRUD, { presenter, header, form, crud } from '@crud/crud'
  119. import rrOperation from '@crud/RR.operation'
  120. import crudOperation from '@crud/CRUD.operation'
  121. import pagination from '@crud/Pagination'
  122. // import { exportFile } from '@/utils/index'
  123. // import qs from 'qs'
  124. import { mapGetters } from 'vuex'
  125. const defaultForm = { id: null, title: null, code: null, type: 1, seqencing: 999, status: 1, remarks: null }
  126. export default {
  127. name: 'Column',
  128. components: { pagination, crudOperation, rrOperation },
  129. cruds() {
  130. return CRUD({ title: '栏目', url: 'api/queryMachine/initQueryTopic', crudMethod: { ...crudColumn }, optShow: {
  131. add: true,
  132. edit: true,
  133. del: false,
  134. reset: true,
  135. download: false,
  136. group: false
  137. }})
  138. },
  139. mixins: [presenter(), header(), form(function() {
  140. return Object.assign({ libcode: this.user.fonds.fondsNo }, defaultForm)
  141. }), crud()],
  142. data() {
  143. return {
  144. permission: {
  145. add: ['admin', 'column:add'],
  146. edit: ['admin', 'column:edit'],
  147. del: ['admin', 'column:del']
  148. },
  149. typeOptions: [
  150. { key: '1', display_name: '图文详情' },
  151. { key: '2', display_name: '文字列表-图文详情' },
  152. { key: '3', display_name: '图文列表-图文详情' },
  153. { key: '4', display_name: '图文列表-外部跳转' }
  154. ],
  155. enabledTypeOptions: [
  156. { key: '1', display_name: '启用' },
  157. { key: '0', display_name: '停用' }
  158. ],
  159. columnTypeOptions: [
  160. { value: 1, label: '图文详情' },
  161. { value: 2, label: '文字列表-图文详情' },
  162. { value: 3, label: '图文列表-图文详情' },
  163. { value: 4, label: '图文列表-外部跳转' }
  164. ],
  165. rules: {
  166. title: [
  167. { required: true, message: '请输入机构名称', trigger: 'blur' }
  168. ],
  169. code: [
  170. { required: true, message: '请输入栏目编码', trigger: 'blur' }
  171. ],
  172. type: [
  173. { required: true, message: '请选择栏目类型', trigger: 'change' }
  174. ],
  175. seqencing: [
  176. { required: true, message: '请输入排序', trigger: 'blur', type: 'number' }
  177. ],
  178. status: [
  179. { required: true, message: '请选择状态', trigger: 'change' }
  180. ]
  181. }
  182. }
  183. },
  184. computed: {
  185. ...mapGetters([
  186. 'baseApi',
  187. 'user'
  188. ])
  189. },
  190. created() {
  191. },
  192. mounted() {
  193. },
  194. methods: {
  195. [CRUD.HOOK.beforeRefresh]() {
  196. this.crud.query.libcode = this.user.fonds.fondsNo
  197. },
  198. [CRUD.HOOK.afterRefresh]() {
  199. },
  200. // 新增前
  201. [CRUD.HOOK.beforeToAdd](crud, form) {
  202. },
  203. // 编辑前
  204. [CRUD.HOOK.beforeToEdit](crud, form) {
  205. },
  206. // 提交前做的操作
  207. [CRUD.HOOK.afterValidateCU](crud) {
  208. console.log(crud.form)
  209. return true
  210. },
  211. handleFiterColumnZero(val) {
  212. console.log(val)
  213. },
  214. toDelete(datas) {
  215. this.$confirm('此操作将删除当前所选' + this.crud.title + '<span>你是否还要继续?</span>', '提示', {
  216. confirmButtonText: '继续',
  217. cancelButtonText: '取消',
  218. type: 'warning',
  219. dangerouslyUseHTMLString: true
  220. }).then(() => {
  221. this.crud.delAllLoading = true
  222. const ids = []
  223. datas.forEach(val => {
  224. ids.push(val.id)
  225. })
  226. crudColumn.del(ids).then((res) => {
  227. if (res.code !== 500) {
  228. this.$message({ message: '删除成功', type: 'success', offset: 8 })
  229. this.crud.refresh()
  230. } else {
  231. this.$message({ message: '删除失败', type: 'error', offset: 8 })
  232. }
  233. this.crud.delAllLoading = false
  234. }).catch(err => {
  235. this.crud.delAllLoading = false
  236. console.log(err)
  237. })
  238. }).catch(() => {
  239. })
  240. },
  241. changeStatus(data, val) {
  242. this.$confirm('此操作将禁用 / 启用栏目 “' + data.title + '”' + '<span>你是否还要继续?</span>', '提示', {
  243. confirmButtonText: '继续',
  244. cancelButtonText: '取消',
  245. type: 'warning',
  246. dangerouslyUseHTMLString: true
  247. }).then(() => {
  248. crudColumn.FetchQueryTopicStatus(data).then(res => {
  249. this.$message({ message: '修改成功', type: 'success', offset: 8 })
  250. }).catch(() => {
  251. data.status = !data.status
  252. })
  253. }).catch(() => {
  254. this.$message({ message: '已取消修改', offset: 8 })
  255. data.status = data.status ? 0 : 1
  256. })
  257. },
  258. doExport(data) {
  259. crud.downloadLoading = true
  260. this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', {
  261. confirmButtonText: '继续',
  262. cancelButtonText: '取消',
  263. type: 'warning',
  264. dangerouslyUseHTMLString: true
  265. }).then(() => {
  266. const ids = []
  267. data.forEach(val => {
  268. ids.push(val.fondsId)
  269. })
  270. const params = {
  271. 'fondsIds': ids
  272. }
  273. console.log('params', params)
  274. // exportFile(this.baseApi + '/api/fonds/download?' + qs.stringify(params, { indices: false }))
  275. }).catch(() => {
  276. })
  277. }
  278. }
  279. }
  280. </script>
  281. <style lang="scss" scoped>
  282. ::v-deep .el-dialog {
  283. .el-dialog__body {
  284. .el-form-item{
  285. &:nth-child(odd){
  286. margin-right: 0 !important;
  287. }
  288. }
  289. }
  290. }
  291. </style>