fix(order): -移除英文字段验证
- 删除与OA流程相关的无用代码和组件
- 移除系统用户管理中的获取三方人员功能
- 更新设备二维码链接使用动态API地址
- 清理不合格处理页面中的OA相关功能和字段
- 移除登录页面的集团集成登录按钮
- 删除未使用的API接口和组件引用
| | |
| | | }); |
| | | } |
| | | |
| | | // æ¥çOA详æ
|
| | | // æ¥çä¸åæ ¼å¤ç详æ
|
| | | export function getUnqualifiedHandler(query) { |
| | | return request({ |
| | | url: "/unqualifiedHandler/getUnqualifiedHandler", |
| | |
| | | params: query, |
| | | }); |
| | | } |
| | | //æäº¤OAæµç¨ |
| | | export function pushOA(query) { |
| | | return request({ |
| | | url: "/unqualifiedHandler/pushOA", |
| | | method: "post", |
| | | data: query, |
| | | }); |
| | | } |
| | | //æ¥çOAæµç¨ |
| | | export function getOaFlow(query) { |
| | | return request({ |
| | | url: "/unqualifiedHandler/getOaFlow", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | |
| | | }) |
| | | } |
| | | |
| | | // è·ååç¹ç»å½å°å |
| | | export function getSsoAuthUrl() { |
| | | return request({ |
| | | url: '/getSsoAuthUrl', |
| | | method: 'get' |
| | | }) |
| | | } |
| | | |
| | | // åç¹ç»å½ |
| | | export function LoginBySSO(accessToken) { |
| | | return request({ |
| | | url: '/loginBySSO', |
| | | headers: { |
| | | isToken: false, |
| | | repeatSubmit: false |
| | | }, |
| | | method: 'post', |
| | | params: accessToken |
| | | }) |
| | | } |
| | | |
| | | // æ³¨åæ¹æ³ |
| | | export function register(data) { |
| | | return request({ |
| | |
| | | method: 'get', |
| | | timeout: 20000 |
| | | }) |
| | | } |
| | | } |
| | |
| | | }); |
| | | } |
| | | |
| | | // è·å人äºç³»ç»ç»ç» |
| | | export function selectCompaniesList() { |
| | | return request({ |
| | | url: "/companies/selectCompaniesList", |
| | | method: "get", |
| | | }); |
| | | } |
| | | // è·å人äºç³»ç»ç»ç»ä¸ç人å |
| | | export function selectSimpleList(data) { |
| | | return request({ |
| | | url: "/companies/selectSimpleList", |
| | | method: "post", |
| | | params: data, |
| | | }); |
| | | } |
| | | // è·å人äºç³»ç»ç»ç»ä¸ç人å |
| | | export function addPersonUser(data) { |
| | | return request({ |
| | | url: "/companies/addPersonUser", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | // è·åè§è² |
| | | export function selectRoleList() { |
| | | return request({ |
| | |
| | | // plainï¼æelementUi ææ¡£ä¸ºå |
| | | // clickFunï¼æé®çåè°å½æ° |
| | | export default { |
| | | name: "ZTTable", |
| | | name: "LimsTable", |
| | | filters: { |
| | | typeFn(val, row) { |
| | | if (typeof val === "function") { |
| | |
| | | |
| | | NProgress.configure({ showSpinner: false }) |
| | | |
| | | const whiteList = ['/login', '/register', '/thirdpartylogin', '/logindemo'] |
| | | const whiteList = ['/login', '/register'] |
| | | |
| | | const isWhiteList = (path) => { |
| | | return whiteList.some(pattern => isPathMatch(pattern, path)) |
| | |
| | | component: () => import("@/views/login"), |
| | | hidden: true, |
| | | }, |
| | | // ç¬¬ä¸æ¹ç»å½é¡µ |
| | | { |
| | | path: "/thirdpartylogin", |
| | | component: () => import("@/views/thirdpartylogin"), |
| | | hidden: true, |
| | | }, |
| | | // ç¬¬ä¸æ¹ç»å½é¡µä¸è½¬ |
| | | { |
| | | path: "/logindemo", |
| | | component: () => import("@/views/logindemo"), |
| | | hidden: true, |
| | | }, |
| | | { |
| | | path: "/register", |
| | | component: () => import("@/views/register"), |
| | |
| | | import { login, logout, getInfo, LoginBySSO } from "@/api/login"; |
| | | import { login, logout, getInfo } from "@/api/login"; |
| | | import { getToken, setToken, removeToken } from "@/utils/auth"; |
| | | import { isHttp, isEmpty } from "@/utils/validate"; |
| | | import defAva from "@/assets/images/profile.jpg"; |
| | |
| | | reject(error); |
| | | }); |
| | | }); |
| | | }, |
| | | // åç¹ç»å½ |
| | | LoginBySSO({ commit }, accessToken) { |
| | | return new Promise((resolve, reject) => { |
| | | LoginBySSO(accessToken) |
| | | .then((res) => { |
| | | setToken(res.token); |
| | | commit("SET_TOKEN", res.token); |
| | | Vue.prototype.uploadHeader = { |
| | | Authorization: "Bearer " + res.token, |
| | | }; |
| | | resolve(); |
| | | }) |
| | | .catch((error) => { |
| | | reject(error); |
| | | }); |
| | | }) |
| | | }, |
| | | // è·åç¨æ·ä¿¡æ¯ |
| | | GetInfo({ commit, state }) { |
| | |
| | | * @param date |
| | | * @returns {string} |
| | | */ |
| | | export function getYearAndMonthAndDaysZTZB(date = new Date()) { |
| | | export function getPayrollMonthDate(date = new Date()) { |
| | | let year = date.getFullYear(); |
| | | let month = date.getMonth(); |
| | | let days = date.getDate(); |
| | |
| | | days = days < 10 ? '0' + days : days; |
| | | |
| | | return (year + month + days); |
| | | } |
| | | } |
| | |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <p>è®°å½ç¼å·ï¼ ZTT/QR-16-04-a</p> |
| | | <p>è®°å½ç¼å·ï¼</p> |
| | | </td> |
| | | <td> |
| | | <p>彿¡£é¨é¨ï¼ç»¼å室</p> |
| | |
| | | addRules: { |
| | | code: [{ required: true, message: "请è¾å
¥æ åç¼å·", trigger: "blur" }], |
| | | name: [{ required: true, message: "请è¾å
¥æ åæè¿°", trigger: "blur" }], |
| | | nameEn: [ |
| | | { required: true, message: "请è¾å
¥æ åæè¿°EN", trigger: "blur" }, |
| | | ], |
| | | isProduct: [ |
| | | { required: true, message: "è¯·éæ©æ¯å¦äº§åæ å", trigger: "change" }, |
| | | ], |
| | |
| | | <div class="device-footer"> |
| | | <div> |
| | | <vueQr class="qr-code" |
| | | :text="'https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code=' + Mdata.managementNumber + '&type=device'" |
| | | :text="javaApi + '/qr/qrScan?code=' + Mdata.managementNumber + '&type=device'" |
| | | :size="200" :margin="10"></vueQr> |
| | | </div> |
| | | <div class="device-number"> |
| | |
| | | rules1: { |
| | | deviceName: [ |
| | | { required: true, message: '请è¾å
¥ä»ªå¨åç§°', trigger: 'blur' }, |
| | | ], |
| | | enDeviceName: [ |
| | | { required: true, message: '请è¾å
¥ä»ªå¨åç§°EN', trigger: 'blur' }, |
| | | ], |
| | | specificationModel: [ |
| | | { required: true, message: '请è¾å
¥è§æ ¼åå·', trigger: 'blur' }, |
| | |
| | | <el-form-item label="仪å¨åç§°:" required prop="deviceName"> |
| | | <el-input :disabled="isUp" v-model="formData.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="仪å¨åç§°EN:" required> |
| | | <el-form-item label="仪å¨åç§°EN:"> |
| | | <el-input :disabled="isUp" v-model="formData.enDeviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è§æ ¼åå·:" required> |
| | |
| | | <el-form-item label="仪å¨åç§°:" required> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="仪å¨åç§°EN:" required> |
| | | <el-form-item label="仪å¨åç§°EN:"> |
| | | <el-input v-model="formData2.enDeviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è§æ ¼åå·:" required> |
| | |
| | | this.$message.error('æªè¾å
¥ä»ªå¨åç§°') |
| | | return |
| | | } |
| | | if (!this.formData.enDeviceName) { |
| | | this.$message.error('æªè¾å
¥ä»ªå¨åç§°EN') |
| | | return |
| | | } |
| | | if (!this.formData.specificationModel) { |
| | | this.$message.error('æªè¾å
¥è§æ ¼åå·') |
| | | return |
| | |
| | | submitForm2() { |
| | | if (!this.formData2.deviceName) { |
| | | this.$message.error('æªè¾å
¥ä»ªå¨åç§°') |
| | | return |
| | | } |
| | | if (!this.formData2.enDeviceName) { |
| | | this.$message.error('æªè¾å
¥ä»ªå¨åç§°EN') |
| | | return |
| | | } |
| | | if (!this.formData2.specificationModel) { |
| | |
| | | production: [ |
| | | { required: true, message: '请填åç产åä½', trigger: 'blur' } |
| | | ], |
| | | productionEn: [ |
| | | { required: true, message: '请填åç产åä½EN', trigger: 'blur' } |
| | | ], |
| | | }, |
| | | sample: { |
| | | sampleCode: null, |
| | |
| | | production: [ |
| | | { required: true, message: '请填åç产åä½', trigger: 'blur' } |
| | | ], |
| | | productionEn: [ |
| | | { required: true, message: '请填åç产åä½EN', trigger: 'blur' } |
| | | ], |
| | | }, |
| | | sample: { |
| | | sampleCode: null, |
| | |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <el-dialog |
| | | title="æäº¤" |
| | | :show-close="false" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | :visible.sync="dialogVisible" |
| | | width="30%"> |
| | | <span>æ¯å¦ç¡®è®¤æäº¤OAï¼</span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="submitOA" :loading="submitOALoading">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | title="å é¤" |
| | | :show-close="false" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | :visible.sync="deleteVisible" |
| | | width="30%"> |
| | | <span>æ¯å¦ç¡®è®¤<span style="color: #FF4902">å é¤</span>OAï¼</span> |
| | | <span>æ¯å¦ç¡®è®¤<span style="color: #FF4902">å é¤</span>该记å½ï¼</span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="deleteVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="cancelOA" :loading="cancelOALoading">ç¡® å®</el-button> |
| | | <el-button type="primary" @click="deleteRecord" :loading="deleteLoading">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <UnPassDialog ref="unPassDialog" v-if="unPassDialog" |
| | | :orderId="orderId" |
| | | @resetForm="resetForm1" |
| | | :unPassDialog="unPassDialog"></UnPassDialog> |
| | | <OAProcess ref="OAProcess" |
| | | :OAProcess="OAProcess" |
| | | @closeOAProcess="closeOAProcess" |
| | | v-if="OAProcess"></OAProcess> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import UnPassDialog from "./components/unPassDialog.vue"; |
| | | import OAProcess from "./components/OAProcess.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {deleteUnqualifiedHandler, page, pushOA} from "@/api/business/unqualifiedHandler"; |
| | | import {deleteUnqualifiedHandler, page} from "@/api/business/unqualifiedHandler"; |
| | | |
| | | export default { |
| | | components: { |
| | | limsTable, |
| | | OAProcess, |
| | | UnPassDialog, |
| | | }, |
| | | data() { |
| | |
| | | tableLoading: false, |
| | | column: [ |
| | | { label: 'ç¼å·', prop: 'no', width: "160px", }, |
| | | // { |
| | | // label: "OAå®¡æ ¸ç¶æ", |
| | | // prop: "oaState", |
| | | // width: "100px", |
| | | // dataType: "tag", |
| | | // formatData: (params) => { |
| | | // if (params == 1) { |
| | | // return "å¾
å®¡æ ¸"; |
| | | // } else if(params == 2) { |
| | | // return "å®¡æ ¸ä¸"; |
| | | // } else if(params == 3) { |
| | | // return "éè¿"; |
| | | // } else { |
| | | // return "驳å"; |
| | | // } |
| | | // }, |
| | | // formatType: (params) => { |
| | | // if (params == 1) { |
| | | // return "warning"; |
| | | // } else if(params == 2) { |
| | | // return "info"; |
| | | // } else if(params == 3) { |
| | | // return "success"; |
| | | // } else { |
| | | // return "danger"; |
| | | // } |
| | | // }, |
| | | // }, |
| | | { label: '订åå·', prop: 'orderNo' }, |
| | | { |
| | | label: "é¶ä»¶å·", |
| | |
| | | width: '180px', |
| | | operation: [ |
| | | { |
| | | name: 'æäº¤OA', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openOA(row); |
| | | }, |
| | | disabled: (row, index) => { |
| | | return row.requestId !== null // ærequestId说æå·²ç»æäº¤è¿OAï¼ä¸å¯å次æäº¤ |
| | | }, |
| | | showHide: (row) => { |
| | | return this.checkPermi(["unpass:add"]); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'æ¥çOAæµç¨', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.OAView(row); |
| | | }, |
| | | showHide: (row) => { |
| | | return this.checkPermi(["unpass:view"]); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.deleteOA(row); |
| | | }, |
| | | disabled: (row, index) => { |
| | | return row.requestId !== null // ærequestId说æå·²ç»æäº¤è¿OAï¼ä¸å¯å次æäº¤ |
| | | this.openDelete(row); |
| | | }, |
| | | showHide: (row) => { |
| | | return this.checkPermi(["unpass:delete"]); |
| | |
| | | current: 1 |
| | | }, |
| | | statusList: [], |
| | | dialogVisible: false, // 确认æäº¤OAå¼¹æ¡ |
| | | unPassDialog: false, // ä¸åæ ¼å¤çå¼¹æ¡ |
| | | orderId: '', |
| | | OAProcess: false, // OAæµç¨å¼¹æ¡ |
| | | submitOALoading: false, // OAæµç¨å¼¹æ¡æäº¤æé®loading |
| | | deleteVisible: false, // OAæµç¨å é¤å¼¹æ¡ |
| | | cancelOALoading: false, // OAæµç¨å é¤å¼¹æ¡æäº¤æé®loading |
| | | deleteVisible: false, // å é¤ç¡®è®¤å¼¹æ¡ |
| | | deleteLoading: false, // å 餿é®loading |
| | | }; |
| | | }, |
| | | mounted() { |
| | |
| | | this.$refs.unPassDialog.$refs['unPassForm'].resetFields(); |
| | | this.unPassDialog = false |
| | | }, |
| | | // æå¼å é¤OAç¡®è®¤å¼¹æ¡ |
| | | deleteOA (row) { |
| | | // æå¼å é¤ç¡®è®¤å¼¹æ¡ |
| | | openDelete (row) { |
| | | this.handlerId = row.handlerId |
| | | this.deleteVisible = true |
| | | }, |
| | | // æäº¤å é¤ç³è¯· |
| | | cancelOA () { |
| | | // å é¤è®°å½ |
| | | deleteRecord () { |
| | | this.de = true |
| | | deleteUnqualifiedHandler({id: this.handlerId,}).then(res => { |
| | | this.cancelOALoading = false |
| | | this.deleteLoading = false |
| | | if (res.code === 200) { |
| | | this.deleteVisible = false |
| | | this.$message.success('å 餿å') |
| | | this.refreshTable('page') |
| | | } |
| | | }).catch(error => { |
| | | this.cancelOALoading = false |
| | | this.deleteLoading = false |
| | | console.error(error); |
| | | }); |
| | | }, |
| | | // æ¥çæäº¤OAçæ°æ® |
| | | openOA (row) { |
| | | this.handlerId = row.handlerId |
| | | this.dialogVisible = true |
| | | }, |
| | | // æ¥çOAæµç¨ |
| | | OAView (row) { |
| | | this.OAProcess = true |
| | | this.$nextTick(() => { |
| | | this.$refs.OAProcess.getInfo(row.handlerId) |
| | | }) |
| | | }, |
| | | // å
³éæ¥çOAæµç¨çå¼¹æ¡ |
| | | closeOAProcess () { |
| | | this.OAProcess = false |
| | | }, |
| | | //æäº¤OA |
| | | submitOA(row) { |
| | | // æäº¤OA |
| | | this.submitOALoading = true |
| | | pushOA({handlerId: this.handlerId,}).then(res => { |
| | | this.submitOALoading = false |
| | | if (res.code === 200) { |
| | | this.dialogVisible = false |
| | | this.$message.success('æäº¤æå') |
| | | this.refreshTable('page') |
| | | } |
| | | }).catch(error => { |
| | | this.submitOALoading = false |
| | | console.error(error); |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | |
| | | tableLoading: false, |
| | | column: [ |
| | | { label: 'ç¼å·', prop: 'no' }, |
| | | // { |
| | | // label: "OAå®¡æ ¸ç¶æ", |
| | | // prop: "oaState", |
| | | // width: "100px", |
| | | // dataType: "tag", |
| | | // formatData: (params) => { |
| | | // if (params == 0) { |
| | | // return "å¦"; |
| | | // } else { |
| | | // return "æ¯"; |
| | | // } |
| | | // }, |
| | | // formatType: (params) => { |
| | | // if (params == 0) { |
| | | // return "danger"; |
| | | // } else { |
| | | // return "primary"; |
| | | // } |
| | | // }, |
| | | // }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | |
| | | <router-link class="link-type" :to="'/register'">ç«å³æ³¨å</router-link> |
| | | </div> |
| | | </el-form-item> |
| | | <el-button v-if="true" type="primary" plain @click="goLogin">éå¢éæç»å½</el-button> |
| | | </el-form> |
| | | </div> |
| | | <!-- åºé¨ --> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getCodeImg, getSsoAuthUrl } from "@/api/login"; |
| | | import { getCodeImg } from "@/api/login"; |
| | | import { encrypt, decrypt } from '@/utils/jsencrypt' |
| | | |
| | | export default { |
| | |
| | | return { |
| | | codeUrl: "", |
| | | loginForm: { |
| | | username: "ZT-", |
| | | username: "", |
| | | password: "", |
| | | rememberMe: false, |
| | | code: "", |
| | |
| | | // this.getCookie(); |
| | | }, |
| | | methods: { |
| | | async goLogin() { |
| | | await getSsoAuthUrl().then(res => { |
| | | window.location.href = res.data |
| | | }) |
| | | }, |
| | | getCode() { |
| | | getCodeImg().then(res => { |
| | | this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled; |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getYearAndMonthAndDays, getYearAndMonthAndDaysZTZB } from "@/utils/date"; |
| | | import { getYearAndMonthAndDays, getPayrollMonthDate } from "@/utils/date"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { selectAuxiliaryAllByMonth } from "@/api/performance/manHour"; |
| | | export default { |
| | |
| | | data() { |
| | | return { |
| | | queryParams: { |
| | | month: getYearAndMonthAndDaysZTZB().slice(0, 7), |
| | | month: getPayrollMonthDate().slice(0, 7), |
| | | name: "", |
| | | departLims: "", |
| | | }, |
| | |
| | | }, |
| | | refresh() { |
| | | this.queryParams = { |
| | | month: getYearAndMonthAndDaysZTZB().slice(0, 7), |
| | | month: getPayrollMonthDate().slice(0, 7), |
| | | name: "", |
| | | departLims: "", |
| | | }; |
| | |
| | | }, |
| | | objectId: '', |
| | | productRules: { |
| | | name: [{ required: true, message: '请填å产ååç§°', trigger: 'blur' }], |
| | | nameEn: [{ required: true, message: '请填å产ååç§°EN', trigger: 'blur' }] |
| | | name: [{ required: true, message: '请填å产ååç§°', trigger: 'blur' }] |
| | | }, |
| | | uploadDia: false, |
| | | fileList: [], |
| | |
| | | }, |
| | | userRules: { |
| | | company: [{ required: true, message: '请è¾å
¥å®¢æ·åç§°', trigger: 'blur' }], |
| | | companyEn: [{ required: true, message: '请è¾å
¥å®¢æ·åç§°EN', trigger: 'blur' }], |
| | | address: [{ required: true, message: '请è¾å
¥åä½å°å', trigger: 'blur' }], |
| | | addressEn: [{ required: true, message: '请è¾å
¥åä½å°åEN', trigger: 'blur' }], |
| | | num: [{ required: true, message: '请è¾å
¥å æ¥é¢åº¦', trigger: 'blur' }], |
| | | code2: [{ required: true, message: '请è¾å
¥å®¢æ·ç¼å·', trigger: 'blur' }], |
| | | }, |
| | |
| | | </el-form> |
| | | </div> |
| | | <div class="options_button"> |
| | | <el-button type="primary" size="mini" @click="openthirdParty" |
| | | v-hasPermi="['system:user:add']">è·å䏿¹äººå</el-button> |
| | | <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" |
| | | v-hasPermi="['system:user:add']">æ°å¢ç¨æ·</el-button> |
| | | </div> |
| | |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <!-- è·å人äºç³»ç»äººåä¿¡æ¯ --> |
| | | <el-dialog title="è·å人äºç³»ç»äººåä¿¡æ¯" :visible.sync="addthirdParty" width="70%"> |
| | | <div class="body" v-loading="thirdPartyLoading"> |
| | | <el-row> |
| | | <el-col :span="8" style="height: 70vh;overflow: hidden;" v-if="companiesList.length != 1"> |
| | | <el-input v-model="search2" placeholder="è¾å
¥å
³é®åæç´¢" clearable size="small" @clear="searchFilter2" |
| | | @keyup.enter.native="searchFilter2" prefix-icon="el-icon-search" style="margin-bottom: 20px;width: 90%" /> |
| | | <el-tree :data="datathirdParty" node-key="companyId" :props="defaultProps1" @node-click="nodeClick2" |
| | | style="height: calc(100% - 42px);" @node-expand="nodeOpen0" :filter-node-method="filterNode2" ref="tree2" |
| | | highlight-current> |
| | | </el-tree> |
| | | </el-col> |
| | | <el-col :span="companiesList.length == 1 ? 24 : 16" style="height: 70vh;padding-left: 8px;"> |
| | | <div style="display: flex;align-items: center;margin-bottom: 10px"> |
| | | <span style="width: 140px">åå·¥å·/åå·¥å§å:</span> |
| | | <el-input size="small" placeholder="请è¾å
¥åå·¥å·/åå·¥å§å" @clear="searchPerson" clearable v-model="userSearch2" |
| | | style="width: 50%" @keyup.enter.native="searchPerson()"></el-input> |
| | | </div> |
| | | <el-table height="67vh" stripe :data="personList" v-loading="personLoad" ref="personTable" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border |
| | | @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="50"> |
| | | </el-table-column> |
| | | <el-table-column prop="employeeID" label="åå·¥å·"> |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="åå·¥å§å"> |
| | | </el-table-column> |
| | | <el-table-column prop="department" label="é¨é¨" min-width="200"> |
| | | </el-table-column> |
| | | <el-table-column prop="isLive" label="å·²åå¨" width="80" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-tag type="success" effect="dark" v-if="scope.row.isLive === 1">â</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="addthirdParty = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="addUser2" :loading="addLoad">ç¡® å®</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog title="æ¶ææ°å¢" :visible.sync="addDia" width="400px"> |
| | | <div class="body"> |
| | | <el-row style="line-height: 50px;"> |
| | |
| | | resetUserPwd, |
| | | changeUserStatus, |
| | | deptTreeSelect, |
| | | selectCompaniesList, selectSimpleList, addPersonUser, uploadFile, selectRoleList, selectCustomEnum, addDepartment |
| | | uploadFile, selectRoleList, selectCustomEnum, addDepartment |
| | | } from "@/api/system/user"; |
| | | import { getToken } from "@/utils/auth"; |
| | | import Treeselect from "@riophae/vue-treeselect"; |
| | |
| | | children: "children", |
| | | label: "label" |
| | | }, |
| | | defaultProps1: { |
| | | children: "children", |
| | | label: "companyName" |
| | | }, |
| | | // ç¨æ·å¯¼å
¥åæ° |
| | | upload: { |
| | | // æ¯å¦æ¾ç¤ºå¼¹åºå±ï¼ç¨æ·å¯¼å
¥ï¼ |
| | |
| | | userName: [ |
| | | { required: true, message: "请填åè´¦å·", trigger: "blur" } |
| | | ], |
| | | // nameEn: [ |
| | | // { required: true, message: "请è¾å
¥å§åEN", trigger: "blur" } |
| | | // ], |
| | | status: [ |
| | | { required: true, message: "è¯·éæ©ç¶æ", trigger: "change" } |
| | | ], |
| | |
| | | } |
| | | ] |
| | | }, |
| | | // è·å䏿¹äººåå¼¹æ¡ |
| | | addthirdParty: false, |
| | | thirdPartyLoading: false, |
| | | companiesList: [], |
| | | search2: '', |
| | | datathirdParty: [], |
| | | currentCompaniesList: [], |
| | | personList: [], |
| | | personListCopy: [], |
| | | personLoad: false, |
| | | userSearch2: '', |
| | | addLoad: false, |
| | | // |
| | | addDia: false, // æ·»å æ¶æå¼¹æ¡ |
| | | addOb: { |
| | | fatherId: 10001, |
| | |
| | | default: |
| | | break; |
| | | } |
| | | }, |
| | | // è·å䏿¹äººå |
| | | async openthirdParty() { |
| | | try { |
| | | this.addthirdParty = true; |
| | | this.thirdPartyLoading = true; |
| | | |
| | | const companiesResponse = await selectCompaniesList(); |
| | | this.companiesList = this.HaveJson(companiesResponse.data); |
| | | |
| | | if (this.companiesList.length === 1) { |
| | | const personResponse = await selectSimpleList({ companyId: this.companiesList[0].companyId }); |
| | | this.personListCopy = JSON.parse(JSON.stringify(personResponse.data)); |
| | | this.personList = personResponse.data; |
| | | this.$refs.personTable.doLayout(); |
| | | } |
| | | |
| | | this.datathirdParty = this.tranListToTreeData(this.companiesList, "ROOT"); |
| | | console.log(' this.datathirdParty---', this.datathirdParty) |
| | | } catch (error) { |
| | | console.error("Error fetching third party data:", error); |
| | | } finally { |
| | | this.thirdPartyLoading = false; |
| | | } |
| | | }, |
| | | tranListToTreeData(list, rootValue) { |
| | | return list.reduce((arr, item) => { |
| | | if (item.parentCompanyId === rootValue) { |
| | | const children = this.tranListToTreeData(list, item.companyId); |
| | | if (children.length) { |
| | | item.children = children; |
| | | } |
| | | arr.push(item); |
| | | } |
| | | return arr; |
| | | }, []); |
| | | }, |
| | | searchPerson() { |
| | | let arr = JSON.parse(JSON.stringify(this.personListCopy)) |
| | | this.personList = arr.filter(a => { |
| | | if (a.employeeID.includes(this.userSearch2) || a.nickName.includes(this.userSearch2)) { |
| | | return true |
| | | } |
| | | }) |
| | | }, |
| | | searchFilter2() { |
| | | this.$refs.tree2.filter(this.search2) |
| | | }, |
| | | nodeClick2(ob, node, el) { |
| | | this.getNodeParent(node) |
| | | if (ob.companyId !== 'SC21') { |
| | | this.personLoad = true |
| | | selectSimpleList({ companyId: ob.companyId }).then(res => { |
| | | this.personListCopy = JSON.parse(JSON.stringify(res.data)) |
| | | this.personList = res.data |
| | | this.personLoad = false |
| | | this.$refs.personTable.doLayout() |
| | | }) |
| | | } |
| | | }, |
| | | getNodeParent(val) { |
| | | this.currentCompaniesList[val.level - 1] = val.data.companyId |
| | | if (val.parent != null) { |
| | | this.getNodeParent(val.parent) |
| | | } |
| | | }, |
| | | nodeOpen0(data, node, el) { |
| | | // this.currentCompaniesList[node.level - nodeOpen01] = data.id |
| | | }, |
| | | filterNode2(value, data) { |
| | | if (!value) return true; |
| | | return data['companyName'].indexOf(value) !== -1; |
| | | }, |
| | | addUser2() { |
| | | if (this.multipleSelection.length === 0) { |
| | | return this.$message.error('è¯·éæ©äººå') |
| | | } |
| | | if (this.currentCompaniesList.length === 0) { |
| | | return this.$message.error('è¯·éæ©ç»ç»') |
| | | } |
| | | /* for (let index = this.currentCompaniesList.length-1; index >1; index--) { |
| | | let obj = this.multipleSelection.find(a=>a.companyId==this.currentCompaniesList[index]) |
| | | if(!obj){ |
| | | this.currentCompaniesList.splice(index,1) |
| | | } |
| | | } */ |
| | | let arr = [] |
| | | this.currentCompaniesList.forEach(b => { |
| | | let obj = this.companiesList.find(a => a.companyId == b) |
| | | arr.push(obj) |
| | | }) |
| | | this.addLoad = true |
| | | addPersonUser({ |
| | | company: arr, |
| | | person: this.multipleSelection, |
| | | // roleId: this.componentData.entity.roleId |
| | | }).then(res => { |
| | | this.$message.success('æä½æå') |
| | | this.multipleSelection = [] |
| | | this.$refs.personTable.clearSelection() |
| | | this.addLoad = false |
| | | this.addthirdParty = false |
| | | this.userSearch2 = '' |
| | | this.getList() |
| | | }).catch(e => { |
| | | this.addLoad = false |
| | | }) |
| | | }, |
| | | /** æ°å¢æé®æä½ */ |
| | | handleAdd() { |