Merge branch 'master' of http://139.196.74.78:10010/r/jagzwxm/ja_web
9 files modified
1 files deleted
4 files added
| | |
| | | <el-link @click="handleEdit(row)">编辑</el-link> |
| | | <el-link @click="handleAddChild(row)">新增子项</el-link> |
| | | <el-link type="danger" @click="handleDelete(row)">删除</el-link> |
| | | <el-link type="danger" @click="handleShare(row)">共享</el-link> |
| | | <el-link type="danger" @click="handleShare(row)" v-if="hasSharing">共享</el-link> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | import ShareDiaLog from './ShareDiaLog.vue' |
| | | import { saveOperationLog } from '@ztzf/apis' |
| | | import { useRoute } from 'vue-router' |
| | | import { useStore } from 'vuex' |
| | | |
| | | const store = useStore() |
| | | const permission = computed(() => store.state.user.permission) |
| | | const ancestors = computed(() => store.state.user.userInfo?.detail?.ancestors) |
| | | // 市级部门并且有权限才能看到共享按钮 |
| | | const hasSharing = computed(() => permission.value.department_share && ancestors.value.split(',')?.length === 2) |
| | | const initSearchParams = () => ({ |
| | | deptName: '', |
| | | fullName: '', |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-upload { |
| | | button { |
| | | background: #4C34FF; |
| | | border: none; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-dialog__footer { |
| | |
| | | } |
| | | |
| | | .gd-dialog-form { |
| | | // 最后一排不需要设置 margin-bottom |
| | | // border: 1px solid red; |
| | | // 倒数第二个也设置为0 |
| | | // .el-col:nth-last-child(2) { |
| | | // margin-bottom: 0; |
| | | // } |
| | | // .el-col:nth-last-child(1) { |
| | | // margin-bottom: 0; |
| | | // } |
| | | |
| | | // .el-form-item:nth-last-child(2) { |
| | | // margin-bottom: 0; |
| | | // } |
| | | // .el-form-item:nth-last-child(1) { |
| | | // margin-bottom: 0; |
| | | // } |
| | | .el-input, |
| | | .el-input-number { |
| | | min-width: 200px; |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <basic-container> |
| | | <el-form ref="queryParamsRef" :model="searchParams" class="gd-search-form"> |
| | | <el-form-item label="事项名称" prop="matterName"> |
| | | <el-input |
| | | class="gd-input gray" |
| | | v-model="searchParams.matterName" |
| | | placeholder="请输入" |
| | | clearable |
| | | @clear="handleSearch" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="实施清单名称" prop="implementName"> |
| | | <el-input |
| | | class="gd-input gray" |
| | | v-model="searchParams.implementName" |
| | | placeholder="请输入" |
| | | clearable |
| | | @clear="handleSearch" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="目录编码" prop="catalogCode"> |
| | | <el-input |
| | | class="gd-input gray" |
| | | v-model="searchParams.catalogCode" |
| | | placeholder="请输入" |
| | | clearable |
| | | @clear="handleSearch" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="所属区划" prop="areaCode"> |
| | | <el-tree-select |
| | | class="gd-select gray" |
| | |
| | | :render-after-expand="false" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="实施清单名称" prop="implementName"> |
| | | <el-input |
| | | class="gd-input gray" |
| | | v-model="searchParams.implementName" |
| | | placeholder="请输入" |
| | | clearable |
| | | @clear="handleSearch" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="事项名称" prop="matterName"> |
| | | <el-input |
| | | class="gd-input gray" |
| | | v-model="searchParams.matterName" |
| | | placeholder="请输入" |
| | | clearable |
| | | @clear="handleSearch" |
| | | /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="目录编码" prop="catalogCode"> |
| | | <el-input |
| | | class="gd-input gray" |
| | | v-model="searchParams.catalogCode" |
| | | placeholder="请输入" |
| | | clearable |
| | | @clear="handleSearch" |
| | | /> |
| | | </el-form-item> |
| | | |
| | | |
| | | <el-form-item class="gd-search-actions"> |
| | | <el-button :icon="RefreshRight" @click="resetForm"></el-button> |
| New file |
| | |
| | | <template> |
| | | <el-dialog class="gd-dialog" v-model="visible" title="流程部署" append-to-body width="20%" @closed="visible = false"> |
| | | <avue-form ref="form" :option="optionDeploy" v-model="form" @submit="handleSubmit" /> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="visible = false">取 消</el-button> |
| | | <el-button type="primary" @click="handleDoDeploy" :loading="deployLoading">确 定</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import { deployModel } from '@/api/flow/flow' |
| | | import { flowCategory } from '@/utils/flow' |
| | | import { ElMessage } from 'element-plus' |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | visible: false, |
| | | form: {}, |
| | | selectionId: '', |
| | | deployLoading: false, |
| | | optionDeploy: { |
| | | menuBtn: false, |
| | | column: [ |
| | | { |
| | | label: '流程类型', |
| | | type: 'select', |
| | | dicUrl: '/blade-system/dict/dictionary?code=flow', |
| | | props: { |
| | | label: 'dictValue', |
| | | value: 'dictKey', |
| | | }, |
| | | dataType: 'number', |
| | | slot: true, |
| | | prop: 'categoryValue', |
| | | search: true, |
| | | span: 24, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请选择流程类型', |
| | | trigger: 'blur', |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: '流程模式', |
| | | prop: 'flowMode', |
| | | type: 'radio', |
| | | dicData: [ |
| | | { |
| | | label: '通用流程', |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: '定制流程', |
| | | value: 2, |
| | | }, |
| | | ], |
| | | value: 1, |
| | | span: 24, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请选择流程模式', |
| | | trigger: 'blur', |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: '所属租户', |
| | | prop: 'tenantId', |
| | | type: 'tree', |
| | | multiple: true, |
| | | dicUrl: '/blade-system/tenant/select', |
| | | props: { |
| | | label: 'tenantName', |
| | | value: 'tenantId', |
| | | }, |
| | | display: false, |
| | | span: 24, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请选择所属租户', |
| | | trigger: 'blur', |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | }, |
| | | } |
| | | }, |
| | | watch: { |
| | | 'form.flowMode'() { |
| | | this.$refs.form.option.column.filter(item => { |
| | | if (item.prop === 'tenantId') { |
| | | item.display = this.form.flowMode === 2 |
| | | } |
| | | }) |
| | | }, |
| | | }, |
| | | methods: { |
| | | // 打开弹框 |
| | | open(row) { |
| | | this.visible = true |
| | | this.selectionId = row.id |
| | | }, |
| | | // 表单提交处理 |
| | | handleSubmit(form, done) { |
| | | this.deployLoading = true |
| | | deployModel({ |
| | | modelId: this.selectionId, |
| | | category: flowCategory(form.categoryValue), |
| | | tenantIds: form.tenantId ? form.tenantId.join(',') : '', |
| | | }).then(res => { |
| | | const data = res.data |
| | | if (data.success) { |
| | | ElMessage.success(data.msg) |
| | | done() |
| | | this.$refs.form.resetForm() |
| | | this.visible = false |
| | | this.deployLoading = false |
| | | this.$emit('success') |
| | | } else { |
| | | done() |
| | | this.deployLoading = false |
| | | ElMessage.warning(data.msg) |
| | | } |
| | | }) |
| | | }, |
| | | // 触发表单提交 |
| | | handleDoDeploy() { |
| | | this.$refs.form.submit() |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"></style> |
| New file |
| | |
| | | <template> |
| | | <el-dialog |
| | | class=" nf-dialog" |
| | | v-model="visible" |
| | | title="流程配置" |
| | | append-to-body |
| | | destroy-on-close |
| | | :close-on-press-escape="false" |
| | | :fullscreen="true" |
| | | :before-close="handleNutflowClose" |
| | | @closed="visible = false" |
| | | > |
| | | <nf-design-base |
| | | v-if="nutflowOption.step === 1" |
| | | class="animated fadeIn" |
| | | style="height: calc(100vh - 108px)" |
| | | ref="nfDesignRef" |
| | | :options="nutflowOption.step1" |
| | | ></nf-design-base> |
| | | <nf-design-base |
| | | v-if="nutflowOption.step === 2" |
| | | class="animated fadeIn" |
| | | style="height: calc(100vh - 108px)" |
| | | ref="nfDesignViewRef" |
| | | :options="nutflowOption.step2" |
| | | ></nf-design-base> |
| | | <template #footer> |
| | | <span class="avue-dialog__footer"> |
| | | <el-button @click="handleNutflowClose(() => {}, true)">取 消</el-button> |
| | | <el-button v-if="nutflowOption.step === 1" type="success" @click="handleStep(1)">下 一 步</el-button> |
| | | <el-button v-if="nutflowOption.step === 2" type="success" @click="handleStep(-1)">上 一 步</el-button> |
| | | <el-button v-if="nutflowOption.step === 2" type="primary" @click="handleSubmitModel">确 定</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import { submitModel, detail } from '@/api/flow/flow' |
| | | import { ElMessageBox, ElMessage } from 'element-plus' |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | visible: false, |
| | | nutflowOption: { |
| | | process: {}, |
| | | step: 1, |
| | | step1: { |
| | | toolbar: ['open', 'create', 'fit', 'zoom-in', 'zoom-out', 'undo', 'redo', 'import', 'preview'], |
| | | }, |
| | | step2: { |
| | | mode: 'view', |
| | | simulation: true, |
| | | minimap: true, |
| | | }, |
| | | }, |
| | | } |
| | | }, |
| | | methods: { |
| | | // 打开弹框 |
| | | open(row) { |
| | | this.visible = true |
| | | if (row) { |
| | | detail({ id: row.id }).then(res => { |
| | | const data = res.data.data |
| | | const { modelEditorXml } = data |
| | | this.nutflowOption.step1.xml = modelEditorXml |
| | | this.nutflowOption.process = data |
| | | }) |
| | | } |
| | | }, |
| | | // 提交流程模型 |
| | | handleSubmitModel() { |
| | | const registry = this.$refs['nfDesignViewRef'].getElementRegistry().getAll() |
| | | const { businessObject } = registry[0] |
| | | const { id, name, documentation } = businessObject |
| | | const description = documentation && documentation.length > 0 ? documentation[0].text : null |
| | | const params = { |
| | | ...this.nutflowOption.process, |
| | | modelKey: id, |
| | | name, |
| | | description, |
| | | modelEditorXml: this.nutflowOption.process.xml, |
| | | } |
| | | submitModel(params).then(() => { |
| | | ElMessage.success('操作成功') |
| | | this.handleNutflowClose() |
| | | this.$emit('success') |
| | | }) |
| | | }, |
| | | // 步骤切换 |
| | | handleStep(step) { |
| | | if (step === 1) { |
| | | // 下一步 |
| | | this.$refs['nfDesignRef'].getData('xml').then(data => { |
| | | this.nutflowOption.step1.xml = data |
| | | this.nutflowOption.step2.xml = data |
| | | this.nutflowOption.process.xml = data |
| | | this.nutflowOption.step = 2 |
| | | }) |
| | | } else { |
| | | this.nutflowOption.step = 1 |
| | | } |
| | | }, |
| | | // 关闭弹框处理 |
| | | handleNutflowClose(done, flag) { |
| | | const initOption = { |
| | | process: {}, |
| | | step: 1, |
| | | step1: { |
| | | toolbar: ['open', 'create', 'fit', 'zoom-in', 'zoom-out', 'undo', 'redo', 'import', 'preview'], |
| | | }, |
| | | step2: { |
| | | mode: 'view', |
| | | simulation: true, |
| | | minimap: true, |
| | | }, |
| | | } |
| | | if (done || flag) { |
| | | ElMessageBox.confirm('确定要关闭吗?关闭未保存的修改都会丢失。', '警告', { |
| | | type: 'warning', |
| | | }) |
| | | .then(() => { |
| | | this.nutflowOption = initOption |
| | | if (typeof done === 'function') done() |
| | | this.visible = false |
| | | }) |
| | | .catch(() => {}) |
| | | } else { |
| | | this.nutflowOption = initOption |
| | | this.visible = false |
| | | } |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"></style> |
| New file |
| | |
| | | <template> |
| | | <el-dialog |
| | | class="gd-dialog" |
| | | v-model="visible" |
| | | title="流程配置" |
| | | append-to-body |
| | | :fullscreen="true" |
| | | @closed="visible = false" |
| | | > |
| | | <iframe |
| | | :src="flowUrl" |
| | | width="100%" |
| | | height="700" |
| | | title="流程设计器" |
| | | frameBorder="no" |
| | | border="0" |
| | | marginWidth="0" |
| | | marginHeight="0" |
| | | scrolling="no" |
| | | allowTransparency="yes" |
| | | ></iframe> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="visible = false">取 消</el-button> |
| | | <el-button type="primary" @click="handleRefresh">确 定</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | inject: ['website'], |
| | | data() { |
| | | return { |
| | | visible: false, |
| | | flowUrl: '', |
| | | } |
| | | }, |
| | | methods: { |
| | | // 打开弹框 - 创建模式 |
| | | openCreate() { |
| | | this.flowUrl = `${this.website.design.designUrl}/index.html` |
| | | this.visible = true |
| | | }, |
| | | // 打开弹框 - 编辑模式 |
| | | openEdit(row) { |
| | | this.flowUrl = `${this.website.design.designUrl}/index.html#/editor/${row.id}` |
| | | this.visible = true |
| | | }, |
| | | // 确定并刷新 |
| | | handleRefresh() { |
| | | this.visible = false |
| | | this.$emit('success') |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"></style> |
| New file |
| | |
| | | <template> |
| | | <basic-container> |
| | | <el-form ref="queryParamsRef" :model="searchParams" class="gd-search-form"> |
| | | <el-form-item label="模型标识" prop="modelKey"> |
| | | <el-input |
| | | class="gd-input gray" |
| | | v-model="searchParams.modelKey" |
| | | placeholder="请输入" |
| | | clearable |
| | | @clear="handleSearch" |
| | | /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="模型名称" prop="name"> |
| | | <el-input |
| | | class="gd-input gray" |
| | | v-model="searchParams.name" |
| | | placeholder="请输入" |
| | | clearable |
| | | @clear="handleSearch" |
| | | /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item class="gd-search-actions"> |
| | | <el-button :icon="RefreshRight" @click="resetForm"></el-button> |
| | | <el-button class="search-btn" :icon="Search" @click="handleSearch"></el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <div class="gd-table-toolbar"> |
| | | <el-button :icon="Plus" color="#4C34FF" type="primary" v-if="permission.flow_model_create" @click="handleCreate"> |
| | | 创建 |
| | | </el-button> |
| | | <el-button |
| | | :icon="Delete" |
| | | v-if="permission.flow_model_delete" |
| | | @click="handleBatchDelete" |
| | | > |
| | | 删除 |
| | | </el-button> |
| | | </div> |
| | | |
| | | <div class="gd-table-container" v-loading="loading"> |
| | | <div class="gd-table-content gd-table-content-bg"> |
| | | <el-table class="gd-table" :data="list" @selection-change="selectionChange"> |
| | | <el-table-column type="selection" width="55" /> |
| | | <el-table-column label="序号" width="80"> |
| | | <template v-slot="{ $index }"> |
| | | {{ $index + 1 }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="id" show-overflow-tooltip label="模型主键" /> |
| | | <el-table-column prop="modelKey" show-overflow-tooltip label="模型标识" /> |
| | | <el-table-column prop="name" show-overflow-tooltip label="模型名称" /> |
| | | <el-table-column prop="version" show-overflow-tooltip label="流程版本"> |
| | | <template v-slot="{ row }"> |
| | | <el-tag>v{{ row.version }}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="created" show-overflow-tooltip label="创建时间" /> |
| | | <el-table-column prop="lastUpdated" show-overflow-tooltip label="更新时间" /> |
| | | <el-table-column label="操作" class-name="operation-btns" width="200"> |
| | | <template v-slot="{ row }"> |
| | | <el-link type="primary" v-if="permission.flow_model_update" @click="handleUpdate(row)">配置</el-link> |
| | | <el-link type="primary" v-if="permission.flow_model_deploy" @click="handleDeploy(row)">部署</el-link> |
| | | <el-link type="primary" v-if="permission.flow_model_delete" @click="handleDelete(row)">删除</el-link> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | |
| | | <div class="gd-pagination-parent"> |
| | | <el-pagination |
| | | popper-class="gd-select-popper" |
| | | v-model:current-page="searchParams.current" |
| | | v-model:page-size="searchParams.size" |
| | | layout="total, prev, pager, next, sizes" |
| | | :total="total" |
| | | @change="getList" |
| | | /> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 流程配置弹框 - designMode --> |
| | | <FlowConfigDialog |
| | | v-if="flowConfigDialogVisible && website.design.designMode" |
| | | v-model="flowConfigDialogVisible" |
| | | ref="flowConfigDialogRef" |
| | | @success="getList" |
| | | /> |
| | | |
| | | <!-- 流程配置弹框 - iframe模式 --> |
| | | <IframeFlowDialog |
| | | v-if="iframeFlowDialogVisible && !website.design.designMode" |
| | | v-model="iframeFlowDialogVisible" |
| | | ref="iframeFlowDialogRef" |
| | | @success="getList" |
| | | /> |
| | | |
| | | <!-- 流程部署弹框 --> |
| | | <DeployDialog v-if="deployDialogVisible" v-model="deployDialogVisible" ref="deployDialogRef" /> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { Search, RefreshRight, Plus, Delete } from '@element-plus/icons-vue' |
| | | import { onMounted, ref, computed, nextTick, getCurrentInstance } from 'vue' |
| | | import { ElMessage, ElMessageBox } from 'element-plus' |
| | | import { useStore } from 'vuex' |
| | | import { modelList, removeModel } from '@/api/flow/flow' |
| | | import FlowConfigDialog from './FlowConfigDialog.vue' |
| | | import IframeFlowDialog from './IframeFlowDialog.vue' |
| | | import DeployDialog from './DeployDialog.vue' |
| | | |
| | | const store = useStore() |
| | | const { proxy } = getCurrentInstance() |
| | | const website = proxy.website |
| | | |
| | | // 权限 |
| | | const permission = computed(() => store.getters.permission) |
| | | |
| | | // 初始化查询参数 |
| | | const initSearchParams = () => ({ |
| | | modelKey: '', // 模型标识 |
| | | name: '', // 模型名称 |
| | | current: 1, // 当前页 |
| | | size: 10, // 每页大小 |
| | | }) |
| | | const searchParams = ref(initSearchParams()) |
| | | const total = ref(0) |
| | | const loading = ref(true) |
| | | const list = ref([]) |
| | | const queryParamsRef = ref(null) |
| | | const selectionList = ref([]) |
| | | |
| | | // 弹框控制 |
| | | const flowConfigDialogRef = ref(null) |
| | | const iframeFlowDialogRef = ref(null) |
| | | const deployDialogRef = ref(null) |
| | | const flowConfigDialogVisible = ref(false) |
| | | const iframeFlowDialogVisible = ref(false) |
| | | const deployDialogVisible = ref(false) |
| | | |
| | | // 计算选中的ids |
| | | const ids = computed(() => selectionList.value.map(item => item.id).join(',')) |
| | | |
| | | // 获取列表数据 |
| | | async function getList() { |
| | | loading.value = true |
| | | try { |
| | | const res = await modelList(searchParams.value.current, searchParams.value.size, { |
| | | modelKey: searchParams.value.modelKey, |
| | | name: searchParams.value.name, |
| | | }) |
| | | list.value = res?.data?.data?.records ?? [] |
| | | total.value = res?.data?.data?.total ?? 0 |
| | | } finally { |
| | | loading.value = false |
| | | } |
| | | } |
| | | |
| | | // 查询 |
| | | function handleSearch() { |
| | | searchParams.value.current = 1 |
| | | getList() |
| | | } |
| | | |
| | | // 重置查询 |
| | | function resetForm() { |
| | | queryParamsRef.value?.resetFields() |
| | | searchParams.value = initSearchParams() |
| | | getList() |
| | | } |
| | | |
| | | // 选择变化 |
| | | function selectionChange(list) { |
| | | selectionList.value = list |
| | | } |
| | | |
| | | // 创建流程 |
| | | function handleCreate() { |
| | | if (website.design.designMode) { |
| | | flowConfigDialogVisible.value = true |
| | | nextTick(() => { |
| | | flowConfigDialogRef.value?.open() |
| | | }) |
| | | } else { |
| | | iframeFlowDialogVisible.value = true |
| | | nextTick(() => { |
| | | iframeFlowDialogRef.value?.openCreate() |
| | | }) |
| | | } |
| | | } |
| | | |
| | | // 配置流程 |
| | | function handleUpdate(row) { |
| | | if (website.design.designMode) { |
| | | flowConfigDialogVisible.value = true |
| | | nextTick(() => { |
| | | flowConfigDialogRef.value?.open(row) |
| | | }) |
| | | } else { |
| | | iframeFlowDialogVisible.value = true |
| | | nextTick(() => { |
| | | iframeFlowDialogRef.value?.openEdit(row) |
| | | }) |
| | | } |
| | | } |
| | | |
| | | // 部署流程 |
| | | function handleDeploy(row) { |
| | | deployDialogVisible.value = true |
| | | nextTick(() => { |
| | | deployDialogRef.value?.open(row) |
| | | }) |
| | | } |
| | | |
| | | // 单行删除 |
| | | async function handleDelete(row) { |
| | | await ElMessageBox.confirm('确定将选择数据删除?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | customClass: 'gd-confirm-custom', |
| | | confirmButtonClass: 'gd-confirm-button', |
| | | cancelButtonClass: 'gd-confirm-cancel-button', |
| | | }) |
| | | await removeModel(row.id) |
| | | ElMessage.success('操作成功!') |
| | | getList() |
| | | } |
| | | |
| | | // 批量删除 |
| | | async function handleBatchDelete() { |
| | | if (selectionList.value.length === 0) { |
| | | ElMessage.warning('请选择至少一条数据') |
| | | return |
| | | } |
| | | await ElMessageBox.confirm('确定将选择数据删除?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | customClass: 'gd-confirm-custom', |
| | | confirmButtonClass: 'gd-confirm-button', |
| | | cancelButtonClass: 'gd-confirm-cancel-button', |
| | | }) |
| | | await removeModel(ids.value) |
| | | ElMessage.success('操作成功!') |
| | | getList() |
| | | } |
| | | |
| | | onMounted(() => { |
| | | getList() |
| | | }) |
| | | </script> |
| | | |
| | | <style scoped lang="scss"></style> |
| | |
| | | placeholder="请选择" |
| | | clearable |
| | | @change="handleSearch" |
| | | :disabled="permission.yycx_shtg" |
| | | > |
| | | <el-option |
| | | v-for="item in dictObj.appInnovationStatus" |
| | |
| | | placeholder="请选择" |
| | | clearable |
| | | @change="handleSearch" |
| | | :disabled="permission.sjyy_shtg" |
| | | > |
| | | <el-option v-for="item in isResolvedOptions" :key="item.value" :label="item.label" :value="item.value" /> |
| | | </el-select> |
| | |
| | | :model="formData" |
| | | :rules="rules" |
| | | :disabled="dialogReadonly" |
| | | label-width="190px" |
| | | :label-width="pxToRem(190)" |
| | | > |
| | | <el-row> |
| | | <el-col :span="12"> |
| | |
| | | gdSupplyDemandDetailApi, |
| | | gdSupplyDemandSubmitApi, |
| | | } from '@/views/orderView/orderDataManage/supplyAdd/supplyAddApi' |
| | | import { pxToRem } from '@/utils/rem' |
| | | |
| | | // 初始化表单数据 |
| | | const initForm = () => ({ |
| | |
| | | width: 120px !important; |
| | | } |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | <el-form-item label="任务执行时间" prop="executeTime"> |
| | | <el-date-picker |
| | | class="gd-date-picker" |
| | | popper-class="gd-date-picker-popper" |
| | | v-model="formData.executeTime" |
| | | type="datetime" |
| | | placeholder="请选择" |
| | |
| | | const activeName = ref('all') |
| | | |
| | | const permission = computed(() => store.state.user.permission) |
| | | console.log(permission.value, 'permission') |
| | | |
| | | // 初始化查询参数 |
| | | const initSearchParams = () => ({ |
| | |
| | | value-key="code" |
| | | label-key="name" |
| | | children-key="children" |
| | | :auto-close="true" |
| | | @confirm="onRegionConfirm" |
| | | @close="isShowRegion = false" |
| | | ></u-cascader> |