| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393 |
- <template>
- <ele-modal
- custom-class="ele-dialog-form long-dialog-form"
- :centered="true"
- :visible.sync="addRepairNotesDialog"
- :title="title"
- :close-on-click-modal="false"
- width="85%"
- :maxable="true"
- append-to-body
- @close="handleClose"
- >
- <div class="switch" v-if="type == 'view'">
- <div class="switch_left">
- <ul>
- <li
- v-for="item in tabOptions"
- :key="item.key"
- :class="{ active: activeComp == item.key }"
- @click="handleTag(item.key)"
- >
- {{ item.name }}
- </li>
- </ul>
- </div>
- </div>
- <el-form
- ref="accessoryFormRef"
- :model="form"
- label-width="100px"
- v-show="activeComp === 'main'"
- >
- <headerTitle title="基本信息" style="margin-top: 15px"></headerTitle>
- <el-row>
- <el-col :span="6">
- <el-form-item label="编码:" prop="code">
- <el-input v-model="form.code" disabled />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item
- label="工单名称:"
- prop="name"
- :rules="{
- required: true,
- message: '请选择工单',
- trigger: 'change'
- }"
- >
- <el-input
- v-model="form.name"
- :disabled="type == 'view'"
- @click.native="handHead"
- placeholder="请选择"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item
- label="领用部门"
- prop="receivingDeptId"
- :rules="{
- required: true,
- message: '请输入领用部门',
- trigger: 'change'
- }"
- >
- <el-select
- style="width: 100%"
- v-model="form.receivingDeptId"
- disabled
- placeholder="请选择"
- >
- <el-option
- v-for="item in loginChangeGroupVOList"
- :key="item.groupId"
- :label="item.groupName"
- :value="item.groupId"
- ></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item
- label="领用人"
- prop="recipientName"
- :rules="{
- required: true,
- message: '请输入领用人',
- trigger: 'change'
- }"
- >
- <el-input v-model="form.recipientName" disabled />
- <!-- <el-select style="width: 100%;" v-model="form.recipientName" disabled placeholder="请选择">
- <el-option
- v-for="item in loginChangeRoleVOList"
- :key="item.roleId"
- :label="item.roleName"
- :value="item.roleId"
- ></el-option>
- </el-select> -->
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="6">
- <el-form-item label="使用时间:" prop="usageTime">
- <el-date-picker
- style="width: 100%"
- v-model="form.usageTime"
- type="date"
- placeholder="选择"
- value-format="yyyy-MM-dd HH:mm:ss"
- :disabled="type == 'view'"
- ></el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item
- label="使用部门"
- prop="useDeptId"
- :rules="{
- required: true,
- message: '请选择部门',
- trigger: 'change'
- }"
- >
- <deptSelect
- v-model="form.useDeptId"
- :disabled="type == 'view'"
- @changeGroup="searchDeptNodeClick"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item
- label="使用人"
- prop="userId"
- :rules="{
- required: true,
- message: '请选择使用人',
- trigger: 'change'
- }"
- >
- <el-select
- :disabled="type == 'view'"
- v-model="form.userId"
- size="small"
- style="width: 100%"
- filterable
- @change="changeUser"
- >
- <el-option
- v-for="item in executorList"
- :key="item.id"
- :value="item.id"
- :label="item.name"
- ></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="用途:">
- <el-input
- :disabled="type == 'view'"
- v-model="form.purpose"
- type="textarea"
- :rows="2"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <!-- 配件信息 -->
- <spareInfo
- ref="spareInfoRef"
- :types="type"
- :detailList="detailList"
- v-if="addRepairNotesDialog"
- />
- </el-form>
- <bpmDetail
- v-if="activeComp === 'bpm' && form.processInstanceId"
- :id="form.processInstanceId"
- ></bpmDetail>
- <out-bound-details
- v-if="activeComp === 'store' && form.approvalStatus == 2"
- ref="innerBoundDetailsRef"
- ></out-bound-details>
- <workOrderList ref="workOrderListRef" @changeSelect="changeSelect" />
- <div slot="footer" class="footer">
- <el-button v-if="type != 'view'" type="primary" @click="save"
- >保存</el-button
- >
- <el-button @click="handleClose">取消</el-button>
- </div>
- </ele-modal>
- </template>
- <script>
- import bpmDetail from '@/views/bpm/processInstance/detail.vue';
- import outBoundDetails from '@/BIZComponents/outdetails.vue';
- import deptSelect from '@/components/CommomSelect/dept-select.vue';
- import workOrderList from './workOrderList.vue';
- import spareInfo from './spareInfo.vue';
- import { getUserPage } from '@/api/system/organization';
- import {
- accessorySave,
- accessoryUpdate
- } from '@/api/salesServiceManagement/index';
- import { getCurrentUser } from '@/utils/token-util';
- export default {
- data() {
- return {
- title: '新增',
- addRepairNotesDialog: false,
- type: 'add',
- form: {},
- loginChangeRoleVOList: [],
- executorList: [], // 执行人列表
- detailList: [],
- activeComp: 'main',
- tabOptions: [
- { key: 'main', name: '发货单详情' },
- { key: 'bpm', name: '流程详情' },
- { key: 'store', name: '出库单详情' }
- ]
- };
- },
- components: {
- workOrderList,
- spareInfo,
- deptSelect,
- bpmDetail,
- outBoundDetails
- },
- computed: {
- // 部门下拉
- loginChangeGroupVOList() {
- return this.$store.state.user?.info?.loginChangeGroupVOList;
- }
- },
- methods: {
- init(row, type) {
- let currentUser = getCurrentUser();
- this.form.receivingDeptId = currentUser.currentGroupId; // 部门id
- this.roleVOListData();
- this.addRepairNotesDialog = true;
- this.type = type;
- this.title = type == 'add' ? '新增' : type == 'view' ? '详情' : '修改';
- if (row?.id) {
- this.getDetail(row);
- } else {
- this.form.recipientId = currentUser.currentRoleId; // 领用人Id
- // 下拉数据 name 赋值
- this.echoData();
- }
- },
- async getDetail(data) {
- const row = JSON.parse(JSON.stringify(data));
- const params = { groupId: row.useDeptId };
- this.getUserList(params);
- this.form.approvalStatus = row.approvalStatus;
- this.$set(this.form, 'code', row.code);
- this.$set(this.form, 'name', row.name);
- this.$set(this.form, 'receivingDeptId', row.receivingDeptId);
- this.$set(this.form, 'recipientId', row.recipientId);
- this.$set(this.form, 'usageTime', row.usageTime);
- this.$set(this.form, 'useDeptId', row.useDeptId);
- this.$set(this.form, 'userId', row.userId);
- this.$set(this.form, 'purpose', row.purpose);
- this.form.id = row.id;
- this.$set(this.form, 'recipientName', row.recipientName);
- this.form.receivingDeptName = row.receivingDeptName;
- this.form.useDeptName = row.useDeptName;
- this.form.userName = row.userName;
- this.form.repairId = row.repairId;
- this.detailList = row.details;
- this.form.docNo = row.docNo;
- this.form.orderCode = row.orderCode;
- this.form.processInstanceId = row.processInstanceId;
- },
- handleTag(val) {
- this.activeComp = val;
- if (val == 'store') {
- this.$nextTick(() => {
- this.$refs.innerBoundDetailsRef._getInfo(this.form.code);
- });
- }
- },
- // 领用部门/领用人 name 赋值
- echoData() {
- const depObj = this.loginChangeGroupVOList.find(
- (item) => item.groupId === this.form.receivingDeptId
- );
- const roleObj = this.loginChangeRoleVOList.find(
- (item) => item.roleId === this.form.recipientId
- );
- this.form.receivingDeptName = depObj.groupName;
- this.$set(this.form, 'recipientName', roleObj.roleName);
- },
- // 选择工单
- handHead() {
- if (this.type != 'view') {
- this.$refs.workOrderListRef.open();
- }
- },
- // 确认选择工单
- changeSelect(row) {
- this.$set(this.form, 'name', row.name);
- this.form.repairId = row.id;
- },
- // 角色下拉
- roleVOListData() {
- let arr = this.loginChangeGroupVOList.find((item) => {
- return item.groupId == this.form.receivingDeptId;
- })?.loginChangeRoleVOList;
- this.loginChangeRoleVOList = arr;
- },
- //选择部门(搜索)
- searchDeptNodeClick(info, data) {
- if (info) {
- // 根据部门获取人员
- this.form.useDeptName = data.name;
- const params = { groupId: info };
- this.getUserList(params);
- this.$set(this.form, 'userName', '');
- this.$set(this.form, 'userId', '');
- } else {
- this.form.useDeptId = null;
- }
- },
- // 获取审核人列表、巡点检人员
- async getUserList(params) {
- try {
- let data = { pageNum: 1, size: -1 };
- // 如果传了参数就是获取巡点检人员数据
- if (params) {
- data = Object.assign(data, params);
- }
- const res = await getUserPage(data);
- if (params) {
- this.executorList = res.list;
- }
- } catch (error) {}
- },
- // 选择使用人
- changeUser(val) {
- this.executorList.map((item) => {
- if (item.id == val) {
- this.form.userName = item.name;
- }
- });
- },
- save() {
- let details = this.$refs.spareInfoRef.getSpareData() || [];
- if (details.length == 0) {
- this.$message.warning('请最少添加一条配件信息');
- return;
- }
- let obj = JSON.parse(JSON.stringify(this.form));
- delete obj.code;
- this.$refs.accessoryFormRef.validate(async (valid) => {
- if (valid) {
- let data = {
- ...obj,
- details
- };
- const requestname =
- this.title == '新增' ? accessorySave : accessoryUpdate;
- const res = await requestname(data);
- if (res) {
- this.$message.success('操作成功');
- this.handleClose();
- this.$emit('refresh');
- }
- }
- });
- },
- handleClose() {
- this.form = {};
- this.detailList = [];
- this.$refs.accessoryFormRef.resetFields();
- this.addRepairNotesDialog = false;
- }
- }
- };
- </script>
- <style></style>
|