| | |
| | | </div> |
| | | <div class="section-actions" @click.stop> |
| | | <el-button v-if="!isView" type="primary" @click="openProductForm('add')">添加</el-button> |
| | | <el-button v-if="!isView" plain type="danger" @click="deleteProduct">删除</el-button> |
| | | <el-button v-if="!isView" plain type="danger" @click="deleteProduct" v-hasPermi="['projectManagement:Management:remove']">删除</el-button> |
| | | <el-icon class="toggle-icon" @click="toggleSection('product')"> |
| | | <ArrowDown v-if="sectionCollapsed.product" /> |
| | | <ArrowUp v-else /> |
| | |
| | | <el-input v-model="row.remark" placeholder="请输入" clearable :disabled="isView" /> |
| | | </template> |
| | | <template #teamAction="{ row, index }"> |
| | | <el-button v-if="!isView" link type="danger" :icon="Delete" @click="removeTeamRow(index)">删除</el-button> |
| | | <el-button v-if="!isView" link type="danger" :icon="Delete" @click="removeTeamRow(index)" v-hasPermi="['projectManagement:Management:remove']">删除</el-button> |
| | | <span v-else>—</span> |
| | | </template> |
| | | </PIMTable> |
| | |
| | | <el-input v-model="row.address" placeholder="请输入" clearable :disabled="isView" /> |
| | | </template> |
| | | <template #addressAction="{ row, index }"> |
| | | <el-button v-if="!isView" link type="danger" :icon="Delete" @click="removeAddressRow(index)">删除</el-button> |
| | | <el-button v-if="!isView" link type="danger" :icon="Delete" @click="removeAddressRow(index)" v-hasPermi="['projectManagement:Management:remove']">删除</el-button> |
| | | <span v-else>—</span> |
| | | </template> |
| | | </PIMTable> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="税率(%):" prop="taxRate"> |
| | | <el-select v-model="productForm.taxRate" placeholder="请选择" clearable @change="calculateFromTaxRate"> |
| | | <el-option label="1" value="1" /> |
| | | <el-option label="6" value="6" /> |
| | | <el-option label="13" value="13" /> |
| | | <el-option |
| | | v-for="dict in tax_rate" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | |
| | | const emit = defineEmits(['completed']) |
| | | const { proxy } = getCurrentInstance() |
| | | const { bill_status, project_management, plan_status } = proxy.useDict('bill_status', 'project_management', 'plan_status') |
| | | const { bill_status, project_management, plan_status, tax_rate } = proxy.useDict('bill_status', 'project_management', 'plan_status', 'tax_rate') |
| | | |
| | | const dialogVisible = ref(false) |
| | | const operationType = ref('add') |
| | |
| | | } |
| | | |
| | | function downloadAttachment(att) { |
| | | if (att?.name) { |
| | | if (att) { |
| | | try { |
| | | proxy.$download.name(att.url); |
| | | proxy.$download.byUrl(att.url, att.originalFilename); |
| | | return |
| | | } catch (e) {} |
| | | } |