zhuxinbo пре 5 година
родитељ
комит
02abe8a3dc

+ 10 - 1
src/api/actor.js

@@ -131,4 +131,13 @@ export function fileEdit(parameter) {
         method: 'put',
         data: parameter
     })
-}
+}
+
+
+export function fileEditAll(parameter) {
+    return axios({
+        url: "/ctop/materialAscription/update",
+        method: 'put',
+        data: parameter
+    })
+}

+ 9 - 4
src/mixins/JeecgListMixin.js

@@ -102,6 +102,9 @@ export const JeecgListMixin = {
         this.ipagination.current = 1;
       }
       var params = this.getQueryParams();//查询条件
+      if(params.createTime){
+        params.createTime = moment(params.createTime).format('YYYY-MM-DD')
+      }
       this.loading = true;
       await getAction(this.url.list, params).then((res) => {
         if (res.success) {
@@ -149,10 +152,12 @@ export const JeecgListMixin = {
       if (this.superQueryParams) {
         sqp['superQueryParams'] = encodeURI(this.superQueryParams)
       }
-      if(this.queryParam.createTime){
-        console.log(moment(this.queryParam.createTime).format('YYYY-MM-DD'))
-        this.queryParam.createTime = moment(this.queryParam.createTime).format('YYYY-MM-DD')
-      }
+    //   if(this.queryParam.createTime){
+    //     console.log(moment(this.queryParam.createTime).format('YYYY-MM-DD'))
+    //     var date = this.queryParam.createTime
+    //     this.queryParam.createTime = moment(date).format('YYYY-MM-DD')
+    //   }
+      console.log(this.queryParam)
     //   var param = Object.assign(sqp, this.queryParam, this.isorter, this.filters);
       var param = {...this.queryParam,...this.isorter, ...this.filters}
     //   param.field = this.getQueryField();

+ 181 - 175
src/views/modules/Statistics/quarterDetail.vue

@@ -4,28 +4,12 @@
     <a-row :gutter="10" style="margin-top:10px">
       <a-col :span="24">
         <a-card style="width:100%;">
-          <h3 style="margin:20px 0">当前账户总消耗为:{{ sumAll }}</h3>
 
-          <a-table
-            :columns="columns"
-            :dataSource="dataList"
-            bordered
-            :loading="loading"
-            size="middle"
-            :pagination="true"
-          >
-            <span slot-scope="text" slot="creativeUrl">
-              <video class="video" :src="text" controls="controls" style="height:200px" v-if="text">
-                您的浏览器不支持 video 标签。
-              </video>
-              <div v-else>
-                暂无视频
-              </div>
-            </span>
-            <span slot="shot" slot-scope="text">{{ text ? text : '-' }}</span>
-            <span slot="plan" slot-scope="text">{{ text ? text : '-' }}</span>
-            <span slot="plane" slot-scope="text">{{ text ? text : '-' }}</span>
-            <span slot="clip" slot-scope="text">{{ text ? text : '-' }}</span>
+          <a-table :columns="columns" :dataSource="dataList" bordered :loading="loading" size="middle"
+            :pagination="true">
+
+            <span slot="startDate" slot-scope="text,record"> {{ record.startDate + '~' + record.endDate }}</span>
+
           </a-table>
         </a-card>
       </a-col>
@@ -34,170 +18,192 @@
 </template>
 
 <script>
-import ChartCard from '@/components/ChartCard'
-import ACol from 'ant-design-vue/es/grid/Col'
-import ATooltip from 'ant-design-vue/es/tooltip/Tooltip'
-import MiniArea from '@/components/chart/MiniArea'
-import MiniBar from '@/components/chart/MiniBar'
-import MiniProgress from '@/components/chart/MiniProgress'
-import RankList from '@/components/chart/RankList'
-import Bar from '@/components/chart/Bar'
-import LineChartMultid from '@/components/chart/LineChartMultid'
-import HeadInfo from '@/components/tools/HeadInfo.vue'
-
-import Trend from '@/components/Trend'
+  import ChartCard from '@/components/ChartCard'
+  import ACol from 'ant-design-vue/es/grid/Col'
+  import ATooltip from 'ant-design-vue/es/tooltip/Tooltip'
+  import MiniArea from '@/components/chart/MiniArea'
+  import MiniBar from '@/components/chart/MiniBar'
+  import MiniProgress from '@/components/chart/MiniProgress'
+  import RankList from '@/components/chart/RankList'
+  import Bar from '@/components/chart/Bar'
+  import LineChartMultid from '@/components/chart/LineChartMultid'
+  import HeadInfo from '@/components/tools/HeadInfo.vue'
 
-import { getAction, postAction } from '@/api/manage'
-import { mapGetters } from 'vuex'
+  import Trend from '@/components/Trend'
 
-import qs from 'qs'
+  import {
+    getAction,
+    postAction
+  } from '@/api/manage'
+  import {
+    mapGetters
+  } from 'vuex'
 
-const barData = []
-for (let i = 0; i < 12; i += 1) {
-  barData.push({
-    x: `${i + 1}月`,
-    y: Math.floor(Math.random() * 1000) + 200
-  })
-}
+  import qs from 'qs'
 
-const columns = [
-  {
-    title: '视频',
-    dataIndex: 'creativeUrl',
-    key: 'creativeUrl',
-    align: 'center',
-    scopedSlots: {
-      customRender: 'creativeUrl'
+  const barData = []
+  for (let i = 0; i < 12; i += 1) {
+    barData.push({
+      x: `${i + 1}月`,
+      y: Math.floor(Math.random() * 1000) + 200
+    })
+  }
+  // "realname": "兰兰",
+  //             "authName": "拉活-RTA(lan)",
+  //             "advertiserName": "支付宝(中国)网络技术有限公司",
+  //             "projectName": "支付宝-拉活"
+  const columns = [{
+      title: '项目名称',
+      dataIndex: 'projectName',
+      key: 'projectName',
+      align: 'center',
+      scopedSlots: {
+        customRender: 'projectName'
+      }
     },
-    width: 200
-  },
-  {
-    title: '账户消耗',
-    dataIndex: 'charge',
-    key: 'charge',
-    align: 'center',
-    scopedSlots: {
-      customRender: 'charge'
-    }
-  },
-  {
-    title: '拍摄',
-    dataIndex: 'shot',
-    key: 'shot',
-    align: 'center',
-    scopedSlots: {
-      customRender: 'shot'
-    }
-  },
-  {
-    title: '编导',
-    dataIndex: 'plan',
-    key: 'plan',
-    align: 'center',
-    scopedSlots: {
-      customRender: 'plan'
-    }
-  },
-  {
-    title: '平面',
-    dataIndex: 'plane',
-    key: 'plane',
-    align: 'center',
-    scopedSlots: {
-      customRender: 'plane'
+    {
+      title: '授权名称',
+      dataIndex: 'authName',
+      key: 'authName',
+      align: 'center',
+      scopedSlots: {
+        customRender: 'authName'
+      }
+    },
+    {
+      title: '账户id',
+      dataIndex: 'accountId',
+      key: 'accountId',
+      align: 'center',
+      scopedSlots: {
+        customRender: 'accountId'
+      }
+    },
+    {
+      title: '广告主名称',
+      dataIndex: 'advertiserName',
+      key: 'advertiserName',
+      align: 'center',
+      scopedSlots: {
+        customRender: 'advertiserName'
+      }
+    },
+    {
+      title: '运营',
+      dataIndex: 'realname',
+      key: 'realname',
+      align: 'center',
+      scopedSlots: {
+        customRender: 'realname'
+      }
+    },
+    {
+      title: '消耗',
+      dataIndex: 'cost',
+      key: 'cost',
+      align: 'center',
+      scopedSlots: {
+        customRender: 'cost'
+      }
+    },
+    {
+      title: '所属时间段',
+      dataIndex: 'startDate',
+      key: 'startDate',
+      align: 'center',
+      scopedSlots: {
+        customRender: 'startDate'
+      }
     }
-  },
-  {
-    title: '剪辑',
-    dataIndex: 'clip',
-    key: 'clip',
-    align: 'center',
-    scopedSlots: {
-      customRender: 'clip'
+  ]
+
+  function sum(arr) {
+    var len = arr.length
+    if (len == 0) {
+      return 0
+    } else if (len == 1) {
+      return arr[0]
+    } else {
+      return arr[0] + sum(arr.slice(1))
     }
   }
-]
-function sum(arr) {
-  var len = arr.length
-  if (len == 0) {
-    return 0
-  } else if (len == 1) {
-    return arr[0]
-  } else {
-    return arr[0] + sum(arr.slice(1))
-  }
-}
-export default {
-  name: 'admin-info',
-  components: {
-    ATooltip,
-    ACol
-  },
+  export default {
+    name: 'admin-info',
+    components: {
+      ATooltip,
+      ACol
+    },
 
-  data: function() {
-    return {
-      title: '工作台',
-      loginfo: {},
-      barData,
-      visitInfo: [],
-      visitFields: ['ip', 'visit'],
-      loading: false,
-      rankList: [],
-      tabListNoTitle: [
-        {
-          key: 'kuaishou',
-          tab: '快手'
-        },
-        {
-          key: 'toutiao',
-          tab: '头条'
+    data: function () {
+      return {
+        title: '工作台',
+        loginfo: {},
+        barData,
+        visitInfo: [],
+        visitFields: ['ip', 'visit'],
+        loading: false,
+        rankList: [],
+        tabListNoTitle: [{
+            key: 'kuaishou',
+            tab: '快手'
+          },
+          {
+            key: 'toutiao',
+            tab: '头条'
+          }
+        ],
+        noTitleKey: 'kuaishou',
+        a: '',
+        columns: columns,
+        dataList: [],
+        sumAll: null
+      }
+    },
+    methods: {
+      ...mapGetters(['nickname', 'avatar', 'userInfo'])
+    },
+    filters: {
+      roleName: function (value) {
+        var status = {
+          clip: '剪辑',
+          shot: '拍摄',
+          plan: '策划',
+          plane: '平面'
         }
-      ],
-      noTitleKey: 'kuaishou',
-      a: '',
-      columns: columns,
-      dataList: [],
-      sumAll: null
-    }
-  },
-  methods: {
-    ...mapGetters(['nickname', 'avatar', 'userInfo'])
-  },
-  filters: {
-    roleName: function(value) {
-      var status = {
-        clip: '剪辑',
-        shot: '拍摄',
-        plan: '策划',
-        plane: '平面'
+        return status[value]
       }
-      return status[value]
-    }
-  },
-  created() {
-    var userId = localStorage.getItem('detailUserId')
-    var appType = localStorage.getItem('appType') == 'kuaishou' ? 2 : 1
-    var type = localStorage.getItem('roleData')
-    var weekDate = localStorage.getItem('weekDate').split('~')
-    var typeAll = localStorage.getItem('typeAll')
+    },
+    created() {
+      var userId = localStorage.getItem('quarterUserId')
+      var appType = localStorage.getItem('quarterAppType') == 'kuaishou' ? 2 : 1
+      var type = localStorage.getItem('quarterYear')
+      var weekDate = localStorage.getItem('quarterNow')
 
-    postAction('/ctop/performance2/getYunyingQuarterDetailByUserId', {
-      year: type,
-      quarter: weekDate,
-      appType: appType,
-      projectId: userId
-    }).then(res => {
-      if (res.success) {
-        this.dataList = res.result.map((item, index) => {
-          return {
-            ...item,
-            key: index
-          }
-        })
-      } else {
-        this.$message.error(res.message)
-      }
-    })
+
+      //   localStorage.setItem('quarterUserId', item.userId)
+      //   localStorage.setItem('quarterAppType', this.noTitleKey)
+      //   localStorage.setItem('quarterYear', this.year)
+      //   localStorage.setItem('quarterNow', this.dateRange)
+      //   this.$router.replace({
+      //     path: '/Statistics/quarterDetail'
+      //   })
+      postAction('/ctop/performance2/getYunyingQuarterDetailByUserId', {
+        "year": type,
+        "quarter": weekDate,
+        "userId": userId,
+        "appType": appType
+      }).then(res => {
+        if (res.success) {
+          this.dataList = res.result.map((item, index) => {
+            return {
+              ...item,
+              key: index
+            }
+          })
+        } else {
+          this.$message.error(res.message)
+        }
+      })
+    }
   }
-}
-</script>
+</script>

+ 116 - 82
src/views/modules/advertiser/ProjectList.vue

@@ -16,8 +16,27 @@
           </a-col>
           <template>
             <a-col :md="6" :sm="8">
-              <a-form-item label="负责人">
-                <a-input placeholder="请输入负责人" v-model="queryParam.responsible"></a-input>
+              <a-form-item label="运营负责人">
+                <!-- <a-input placeholder="请输入负责人" v-model="queryParam.responsible"></a-input> -->
+                <a-select placeholder="请选择运营负责人" showSearch optionFilterProp="children" style="width: 100%"
+                  :filterOption="filterOption" v-model="queryParam.responsibleId">
+                  <a-select-option v-for="appModel in options" :key="appModel.userId + new Date().getTime()"
+                    :value="appModel.userId">{{ appModel.realName }}&#12288;&#12288;{{ appModel.roleName }}
+                  </a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+          </template>
+          <template>
+            <a-col :md="6" :sm="8">
+              <a-form-item label="设计负责人">
+                <!-- <a-input placeholder="请输入负责人" v-model="queryParam.responsible"></a-input> -->
+                <a-select placeholder="请选择设计负责人" showSearch optionFilterProp="children" style="width: 100%"
+                  :filterOption="filterOption" v-model="queryParam.designResponsibleId">
+                  <a-select-option v-for="appModel in options" :key="appModel.userId + new Date().getTime()"
+                    :value="appModel.userId">{{ appModel.realName }}&#12288;&#12288;{{ appModel.roleName }}
+                  </a-select-option>
+                </a-select>
               </a-form-item>
             </a-col>
           </template>
@@ -42,20 +61,11 @@
 
     <!-- table区域-begin -->
     <div>
-      <a-table
-        ref="table"
-        size="middle"
-        bordered
-        rowKey="id"
-        :columns="columns"
-        :dataSource="dataSource"
-        :pagination="ipagination"
-        :loading="loading"
-        @change="handleTableChange"
-      >
+      <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
+        :pagination="ipagination" :loading="loading" @change="handleTableChange">
         <span slot="maxBid" slot-scope="text">{{ text / 1000 }}</span>
         <span slot="maxDeepCpaBid" slot-scope="text">{{ text / 1000 }}</span>
-        
+
         <span slot="action" slot-scope="text, record">
           <a @click="handleEdit(record)">编辑</a>
 
@@ -75,76 +85,100 @@
 </template>
 
 <script>
-import ProjectModal from './modules/ProjectModal'
-import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import ProjectModal from './modules/ProjectModal'
+  import {
+    httpAction,
+    getAction
+  } from '@/api/manage'
+  import {
+    JeecgListMixin
+  } from '@/mixins/JeecgListMixin'
 
-export default {
-  name: 'ProjectList',
-  mixins: [JeecgListMixin],
-  components: {
-    ProjectModal
-  },
-  data() {
-    return {
-      description: '项目管理页面',
-      // 表头
-      columns: [
-        {
-          title: '项目名称',
-          align: 'center',
-          dataIndex: 'projectName'
-        },
-        {
-          title: '广告主名称',
-          align: 'center',
-          dataIndex: 'advertiserName'
+  export default {
+    name: 'ProjectList',
+    mixins: [JeecgListMixin],
+    components: {
+      ProjectModal
+    },
+    data() {
+      return {
+        description: '项目管理页面',
+        // 表头
+        columns: [{
+            title: '项目名称',
+            align: 'center',
+            dataIndex: 'projectName'
+          },
+          {
+            title: '广告主名称',
+            align: 'center',
+            dataIndex: 'advertiserName'
+          },
+          {
+            title: '最高出价',
+            align: 'center',
+            dataIndex: 'maxBid',
+            scopedSlots: {
+              customRender: 'maxBid'
+            }
+          },
+          {
+            title: '最高转化出价',
+            align: 'center',
+            dataIndex: 'maxDeepCpaBid',
+            scopedSlots: {
+              customRender: 'maxDeepCpaBid'
+            }
+          },
+          {
+            title: '运营负责人',
+            align: 'center',
+            dataIndex: 'responsibleName'
+          },
+          {
+            title: '设计负责人',
+            align: 'center',
+            dataIndex: 'designResponsibleName'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align: 'center',
+            scopedSlots: {
+              customRender: 'action'
+            }
+          }
+        ],
+        url: {
+          list: '/ctop/project/list',
+          delete: '/ctop/project/delete',
+          deleteBatch: '/ctop/project/deleteBatch',
+          exportXlsUrl: 'ctop/project/exportXls',
+          importExcelUrl: 'ctop/project/importExcel'
         },
-        {
-          title: '最高出价',
-          align: 'center',
-          dataIndex: 'maxBid',
-          scopedSlots: { customRender: 'maxBid' }
-        },
-        {
-          title: '最高转化出价',
-          align: 'center',
-          dataIndex: 'maxDeepCpaBid',
-          scopedSlots: { customRender: 'maxDeepCpaBid' }
-        },
-        {
-          title: '运营负责人',
-          align: 'center',
-          dataIndex: 'responsibleName'
-        },
-        {
-          title: '设计负责人',
-          align: 'center',
-          dataIndex: 'designResponsibleName'
-        },
-        {
-          title: '操作',
-          dataIndex: 'action',
-          align: 'center',
-          scopedSlots: { customRender: 'action' }
-        }
-      ],
-      url: {
-        list: '/ctop/project/list',
-        delete: '/ctop/project/delete',
-        deleteBatch: '/ctop/project/deleteBatch',
-        exportXlsUrl: 'ctop/project/exportXls',
-        importExcelUrl: 'ctop/project/importExcel'
+        options: []
+      }
+    },
+    computed: {
+      importExcelUrl: function () {
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
       }
-    }
-  },
-  computed: {
-    importExcelUrl: function() {
-      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
-    }
-  },
-  methods: {}
-}
+    },
+    methods: {
+      filterOption(input, option) {
+        return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+      },
+    },
+    mounted() {
+      getAction('/sys/user/getAllUserList', '').then(res => {
+        console.log(res)
+        if (res.success) {
+          this.options = res.result
+        }
+      })
+    },
+  }
 </script>
 <style scoped>
-@import '~@assets/less/common.less';
-</style>
+  @import '~@assets/less/common.less';
+</style>

+ 229 - 235
src/views/modules/advertiser/UserAllocationList.vue

@@ -6,7 +6,14 @@
         <a-row :gutter="24">
           <a-col :md="8" :sm="8">
             <a-form-item label="账号所属人">
-              <a-input placeholder="请输入所属人" v-model="queryParam.userName"></a-input>
+
+              <a-select placeholder="请选择所属人" showSearch optionFilterProp="children" style="width: 100%"
+                :filterOption="filterOption" v-model="queryParam.userId" v-if="userInfo().username == 'admin'">
+                <a-select-option v-for="appModel in optionsAll" :key="appModel.userId + new Date().getTime()"
+                  :value="appModel.userId">{{ appModel.realName }}
+                </a-select-option>
+              </a-select>
+              <a-input placeholder="请输入所属人" v-model="queryParam.userName" v-else></a-input>
             </a-form-item>
           </a-col>
           <template>
@@ -26,12 +33,8 @@
           </a-col>
           <a-col :md="8" :sm="8">
             <a-form-item label="项目名称">
-              <a-select
-                v-model="queryParam.projectId"
-                showSearch
-                optionFilterProp="children"
-                :filterOption="filterOption"
-              >
+              <a-select v-model="queryParam.projectId" showSearch optionFilterProp="children"
+                :filterOption="filterOption">
                 <a-select-option :value="item.projectId" v-for="item of dataElse" :key="item.id">
                   {{ item.mediaId == '1' ? '头条' : '快手' }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{
                     item.projectName
@@ -58,17 +61,8 @@
     <br />
     <!-- table区域-begin -->
     <div>
-      <a-table
-        ref="table"
-        size="middle"
-        bordered
-        rowKey="id"
-        :columns="columns"
-        :dataSource="dataSource"
-        :pagination="ipagination"
-        :loading="loading"
-        @change="handleTableChange"
-      >
+      <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
+        :pagination="ipagination" :loading="loading" @change="handleTableChange">
         <span slot="accountStatus" slot-scope="text, record">
           <!-- {{ text == 0 ? '启用' : '禁用' }} -->
 
@@ -95,60 +89,32 @@
     <!--  添加项目成员 -->
     <a-modal title="账户转让" v-model="visibleAdd" @ok="handleOkAdd" :confirmLoading="confirmLoading" :width="800">
       <a-form :form="form">
-        <a-form-item
-          label="转户人"
-          :labelCol="{ xs: { span: 24 }, sm: { span: 5 } }"
-          :wrapperCol="{ xs: { span: 24 }, sm: { span: 16 } }"
-        >
-          <a-select
-            v-decorator="['transferor']"
-            showSearch
-            optionFilterProp="children"
-            :filterOption="filterOption"
-            style="width:100%"
-            disabled
-          >
+        <a-form-item label="转户人" :labelCol="{ xs: { span: 24 }, sm: { span: 5 } }"
+          :wrapperCol="{ xs: { span: 24 }, sm: { span: 16 } }">
+          <a-select v-decorator="['transferor']" showSearch optionFilterProp="children" :filterOption="filterOption"
+            style="width:100%" disabled>
             <a-select-option :value="item.userId" v-for="(item, index) of options" :key="index">
               {{ item.realName }}
             </a-select-option>
           </a-select>
         </a-form-item>
-        <a-form-item
-          label="受让人"
-          :labelCol="{ xs: { span: 24 }, sm: { span: 5 } }"
-          :wrapperCol="{ xs: { span: 24 }, sm: { span: 16 } }"
-        >
-          <a-select
-            v-decorator="['assignee', { rules: [{ required: true, message: '请选择受让人' }] }]"
-            placeholder="请选择受让人"
-            showSearch
-            optionFilterProp="children"
-            :filterOption="filterOption"
-            style="width:100%"
-          >
+        <a-form-item label="受让人" :labelCol="{ xs: { span: 24 }, sm: { span: 5 } }"
+          :wrapperCol="{ xs: { span: 24 }, sm: { span: 16 } }">
+          <a-select v-decorator="['assignee', { rules: [{ required: true, message: '请选择受让人' }] }]" placeholder="请选择受让人"
+            showSearch optionFilterProp="children" :filterOption="filterOption" style="width:100%">
             <a-select-option :value="item.userId" v-for="(item, index) of options" :key="index">
               {{ item.realName }}
             </a-select-option>
           </a-select>
         </a-form-item>
-        <a-form-item
-          label="转户人绩效截止日期"
-          :labelCol="{ xs: { span: 24 }, sm: { span: 5 } }"
-          :wrapperCol="{ xs: { span: 24 }, sm: { span: 16 } }"
-        >
-          <a-date-picker
-            v-decorator="['transferorDate', { rules: [{ required: true, message: '请选择转户人绩效截止日期' }] }]"
-          />
+        <a-form-item label="转户人绩效截止日期" :labelCol="{ xs: { span: 24 }, sm: { span: 5 } }"
+          :wrapperCol="{ xs: { span: 24 }, sm: { span: 16 } }">
+          <a-date-picker v-decorator="['transferorDate', { rules: [{ required: true, message: '请选择转户人绩效截止日期' }] }]" />
           <!-- , { initialValue:moment(new Date(), 'YYYY-MM-DD') } -->
         </a-form-item>
-        <a-form-item
-          label="受让人绩效开始日期"
-          :labelCol="{ xs: { span: 24 }, sm: { span: 5 } }"
-          :wrapperCol="{ xs: { span: 24 }, sm: { span: 16 } }"
-        >
-          <a-date-picker
-            v-decorator="['assigneeDate', { rules: [{ required: true, message: '请选择受让人绩效截止日期' }] }]"
-          />
+        <a-form-item label="受让人绩效开始日期" :labelCol="{ xs: { span: 24 }, sm: { span: 5 } }"
+          :wrapperCol="{ xs: { span: 24 }, sm: { span: 16 } }">
+          <a-date-picker v-decorator="['assigneeDate', { rules: [{ required: true, message: '请选择受让人绩效截止日期' }] }]" />
         </a-form-item>
         <!-- 
         <a-form-item
@@ -166,194 +132,222 @@
 </template>
 
 <script>
-import UserAllocationModal from './modules/UserAllocationModal'
-import { JeecgListMixin } from '@/mixins/JeecgListMixin'
-import { mapGetters } from 'vuex'
-import { httpAction, getAction, deleteAction } from '@/api/manage'
+  import UserAllocationModal from './modules/UserAllocationModal'
+  import {
+    JeecgListMixin
+  } from '@/mixins/JeecgListMixin'
+  import {
+    mapGetters
+  } from 'vuex'
+  import {
+    httpAction,
+    getAction,
+    deleteAction
+  } from '@/api/manage'
 
-import treeSelect from './modules/Treeselect'
-import moment from 'moment'
-import { postAction } from '../../../api/manage'
-export default {
-  name: 'UserAllocationList',
-  mixins: [JeecgListMixin],
-  components: {
-    UserAllocationModal,
-    treeSelect
-  },
-  data() {
-    return {
-      description: '账号绑定管理页面',
-      visibleAdd: false,
-      options: [],
-      dataElse: [],
-      // 表头
-      columns: [
-        {
-          title: '账号所属人',
-          align: 'center',
-          dataIndex: 'userName'
-        },
-        {
-          title: '授权',
-          align: 'center',
-          dataIndex: 'accountId'
-        },
-        {
-          title: '广告主名称',
-          align: 'center',
-          dataIndex: 'advertiserName'
-        },
-        {
-          title: '项目名称',
-          align: 'center',
-          dataIndex: 'projectName'
-        },
-        //    {
-        //     title: '输入账号  --登陆',
-        //     align:"center",
-        //     dataIndex: 'accountName'
-        //    },
-        {
-          title: '授权名称',
-          align: 'center',
-          dataIndex: 'authName'
-        },
-        {
-          title: '平台类型',
-          align: 'center',
-          dataIndex: 'mediaId',
-          scopedSlots: { customRender: 'mediaId' }
-        },
-        {
-          title: '预警金额',
-          align: 'center',
-          dataIndex: 'warningAmount'
-        },
-        {
-          title: '预警比例',
-          align: 'center',
-          dataIndex: 'warningProportion'
-        },
-        // accountStatus:0启用;1禁用
-        {
-          title: '账户状态',
-          dataIndex: 'accountStatus',
-          align: 'center',
-          scopedSlots: { customRender: 'accountStatus' }
-        },
+  import treeSelect from './modules/Treeselect'
+  import moment from 'moment'
+  import {
+    postAction
+  } from '../../../api/manage'
+  export default {
+    name: 'UserAllocationList',
+    mixins: [JeecgListMixin],
+    components: {
+      UserAllocationModal,
+      treeSelect
+    },
+    data() {
+      return {
+        description: '账号绑定管理页面',
+        visibleAdd: false,
+        options: [],
+        optionsAll: [],
+        dataElse: [],
+        // 表头
+        columns: [{
+            title: '账号所属人',
+            align: 'center',
+            dataIndex: 'userName'
+          },
+          {
+            title: '授权',
+            align: 'center',
+            dataIndex: 'accountId'
+          },
+          {
+            title: '广告主名称',
+            align: 'center',
+            dataIndex: 'advertiserName'
+          },
+          {
+            title: '项目名称',
+            align: 'center',
+            dataIndex: 'projectName'
+          },
+          //    {
+          //     title: '输入账号  --登陆',
+          //     align:"center",
+          //     dataIndex: 'accountName'
+          //    },
+          {
+            title: '授权名称',
+            align: 'center',
+            dataIndex: 'authName'
+          },
+          {
+            title: '平台类型',
+            align: 'center',
+            dataIndex: 'mediaId',
+            scopedSlots: {
+              customRender: 'mediaId'
+            }
+          },
+          {
+            title: '预警金额',
+            align: 'center',
+            dataIndex: 'warningAmount'
+          },
+          {
+            title: '预警比例',
+            align: 'center',
+            dataIndex: 'warningProportion'
+          },
+          // accountStatus:0启用;1禁用
+          {
+            title: '账户状态',
+            dataIndex: 'accountStatus',
+            align: 'center',
+            scopedSlots: {
+              customRender: 'accountStatus'
+            }
+          },
 
-        {
-          title: '系统名称',
-          dataIndex: 'systemType',
-          align: 'center'
+          {
+            title: '系统名称',
+            dataIndex: 'systemType',
+            align: 'center'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align: 'center',
+            scopedSlots: {
+              customRender: 'action'
+            }
+          }
+        ],
+        url: {
+          list: '/ctop/userAllocation/list',
+          delete: '/ctop/userAllocation/delete',
+          deleteBatch: '/ctop/userAllocation/deleteBatch',
+          exportXlsUrl: 'ctop/userAllocation/exportXls',
+          importExcelUrl: 'ctop/userAllocation/importExcel'
         },
-        {
-          title: '操作',
-          dataIndex: 'action',
-          align: 'center',
-          scopedSlots: { customRender: 'action' }
-        }
-      ],
-      url: {
-        list: '/ctop/userAllocation/list',
-        delete: '/ctop/userAllocation/delete',
-        deleteBatch: '/ctop/userAllocation/deleteBatch',
-        exportXlsUrl: 'ctop/userAllocation/exportXls',
-        importExcelUrl: 'ctop/userAllocation/importExcel'
-      },
-      confirmLoading: false,
-      projectId: '',
-      accountId: '',
-      mediaId: '',
-      form: this.$form.createForm(this)
-    }
-  },
-  computed: {
-    importExcelUrl: function() {
-      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
-    }
-  },
-  mounted() {
-    this.getParticipateList()
-  },
-  methods: {
-    moment,
-    onChangeSwitch(item) {
-      console.log(item)
-      var params = {}
-      params.id = item.id
-      params.accountStatus = item.accountStatus == 0 ? 1 : 0
-
-      httpAction('/ctop/userAllocation/edit', params, 'put').then(res => {
-        if (res.success) {
-          this.loadData()
-        }
-      })
-    },
-    getParticipateList() {
-      getAction('/ctop/projectMember/participateList', {
-        userId: this.userInfo().id
-      }).then(res => {
-        if (res.code == 0) {
-          this.dataElse = res.result
-        }
-      })
+        confirmLoading: false,
+        projectId: '',
+        accountId: '',
+        mediaId: '',
+        form: this.$form.createForm(this)
+      }
     },
-    filterOption(input, option) {
-      return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+    computed: {
+      importExcelUrl: function () {
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
+      }
     },
-    ...mapGetters(['nickname', 'avatar', 'userInfo']),
-    getALLperson() {
-      getAction('/sys/user/getAllUserListByCompany', { userId: this.userInfo().id }).then(res => {
+    mounted() {
+      this.getParticipateList()
+      getAction('/sys/user/getAllUserList', '').then(res => {
+        console.log(res)
         if (res.success) {
-          this.options = res.result
+          this.optionsAll = res.result
         }
       })
     },
-    project(item) {
-      console.log(item)
-      this.visibleAdd = true
-      this.accountId = item.accountId
-      this.projectId = item.projectId
+    methods: {
+      moment,
+      onChangeSwitch(item) {
+        console.log(item)
+        var params = {}
+        params.id = item.id
+        params.accountStatus = item.accountStatus == 0 ? 1 : 0
 
-      setTimeout(() => {
-        this.form.setFieldsValue({ transferor: item.userId })
-      }, 0)
-      this.getALLperson()
-    },
-    handleOkAdd(e) {
-      this.confirmLoading = true
+        httpAction('/ctop/userAllocation/edit', params, 'put').then(res => {
+          if (res.success) {
+            this.loadData()
+          }
+        })
+      },
+      getParticipateList() {
+        getAction('/ctop/projectMember/participateList', {
+          userId: this.userInfo().id
+        }).then(res => {
+          if (res.code == 0) {
+            this.dataElse = res.result
+          }
+        })
+      },
+      filterOption(input, option) {
+        return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+      },
+      ...mapGetters(['nickname', 'avatar', 'userInfo']),
+      getALLperson() {
+        getAction('/sys/user/getAllUserListByCompany', {
+          userId: this.userInfo().id
+        }).then(res => {
+          if (res.success) {
+            this.options = res.result
+          }
+        })
+      },
+      project(item) {
+        console.log(item)
+        this.visibleAdd = true
+        this.accountId = item.accountId
+        this.projectId = item.projectId
 
-      this.form.validateFieldsAndScroll((err, values) => {
-        if (err) {
-          // 这里做逻辑处理
-        } else {
-          var params = { ...values }
-          params.transferorDate = moment(values.transferorDate).format('YYYY-MM-DD')
-          params.assigneeDate = moment(values.assigneeDate)
-            // .add(1, 'day')
-            .format('YYYY-MM-DD')
-          params.projectId = this.projectId
-          params.accountId = this.accountId
-          params.status = 0
-          console.log(params)
-          postAction('/ctop/transferAccount/add', params).then(res => {
-            console.log(res)
-            if (res.success) {
-              this.confirmLoading = false
-              this.visibleAdd = false
-              this.form.resetFields()
-            } else {
-              this.$message.error(res.message)
-            }
+        setTimeout(() => {
+          this.form.setFieldsValue({
+            transferor: item.userId
           })
-        }
-      })
+        }, 0)
+        this.getALLperson()
+      },
+      handleOkAdd(e) {
+        this.confirmLoading = true
+
+        this.form.validateFieldsAndScroll((err, values) => {
+          if (err) {
+            // 这里做逻辑处理
+          } else {
+            var params = {
+              ...values
+            }
+            params.transferorDate = moment(values.transferorDate).format('YYYY-MM-DD')
+            params.assigneeDate = moment(values.assigneeDate)
+              // .add(1, 'day')
+              .format('YYYY-MM-DD')
+            params.projectId = this.projectId
+            params.accountId = this.accountId
+            params.status = 0
+            console.log(params)
+            postAction('/ctop/transferAccount/add', params).then(res => {
+              console.log(res)
+              if (res.success) {
+                this.confirmLoading = false
+                this.visibleAdd = false
+                this.form.resetFields()
+              } else {
+                this.$message.error(res.message)
+              }
+            })
+          }
+        })
+      }
     }
   }
-}
 </script>
 <style scoped>
-@import '~@assets/less/common.less';
-</style>
+  @import '~@assets/less/common.less';
+</style>

+ 1 - 1
src/views/modules/headerLibrary/index.vue

@@ -34,7 +34,7 @@
           <a-select
             showSearch
             :value="value"
-            placeholder="input search text"
+            placeholder="请选择关键词"
             style="width: 300px"
             :defaultActiveFirstOption="false"
             :showArrow="false"

+ 10 - 1
src/views/modules/material/excellentMaterial.vue

@@ -180,8 +180,17 @@
       <a-tab-pane :tab="item.tab" v-for="item of examinelList" :key="item.value">
         <div v-if="dataSource.length > 0">
           <a-button @click="onCheckAllChange">{{ checkAll ? '取消  (  ' + checkArr.length + '  )' : '全选' }}</a-button>
+          <!-- 同步项目选择:
+          <a-select showSearch v-model="projectId" placeholder="选择项目" style="width: 500px" optionFilterProp="children"
+            :filterOption="filterOption" allowClear>
+            <a-select-option :value="item.projectId" v-for="item of dataElse" :key="item.id">
+              {{ item.projectName }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{
+                item.mediaId == '1' ? '头条' : '快手'
+              }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ item.advertiserName }}
+            </a-select-option>
+          </a-select> -->
 
-          <a-button :disabled="checkArr.length == 0" v-if="queryParam.projectId" @click="tongbu">一键同步</a-button>
+          <a-button :disabled="checkArr.length == 0" v-if="queryParam.projectId " @click="tongbu">一键同步</a-button>
           <a-checkbox-group @change="onChangeCheck" v-model="checkArr" class="home-card">
             <div class="home-item" v-for="(items, index) in dataSource" :key="index" @click="showDetail(items)">
               <span v-if="items.excellent == 0"></span>

+ 5 - 3
src/views/modules/material/materialList.vue

@@ -169,8 +169,8 @@ a {
           </a-col>
           <a-col :md="8" :sm="8">
             <a-form-item label="时间选择">
-              <!-- <a-date-picker v-model="queryParam.createTime" format="YYYY-MM-DD" style="width:100%" /> -->
-              <a-input placeholder="请输入查询时间" v-model="queryParam.createTime"></a-input>
+              <a-date-picker v-model="queryParam.createTime" format="YYYY-MM-DD" style="width:100%" />
+              <!-- <a-input placeholder="请输入查询时间" v-model="queryParam.createTime"></a-input> -->
             </a-form-item>
           </a-col>
           <a-col :md="8" :sm="8">
@@ -279,7 +279,9 @@ a {
           />
         </div>
         <div v-else style="width:100%;height:400px;display:flex;justify-content: center;align-items: center;">
-          <a-empty />
+          <img
+            src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1575627350102&di=02972956f2243933bffc0d85099adbfe&imgtype=jpg&src=http%3A%2F%2Fimg0.imgtn.bdimg.com%2Fit%2Fu%3D1095310825%2C1528244349%26fm%3D214%26gp%3D0.jpg"
+            alt="" />
         </div>
       </a-tab-pane>
     </a-tabs>

+ 114 - 7
src/views/modules/material/videoMaterial.vue

@@ -273,8 +273,8 @@ a {
           </a-col>
           <a-col :md="8" :sm="8">
             <a-form-item label="时间选择">
-              <!-- <a-date-picker v-model="queryParam.createTime" format="YYYY-MM-DD" style="width:100%" /> -->
-              <a-input placeholder="请输入查询时间" v-model="queryParam.createTime"></a-input>
+              <a-date-picker v-model="queryParam.createTime" format="YYYY-MM-DD" style="width:100%" />
+              <!-- <a-input placeholder="请输入查询时间" v-model="queryParam.createTime"></a-input> -->
             </a-form-item>
           </a-col>
           <a-col :md="8" :sm="8">
@@ -297,6 +297,7 @@ a {
         @click="
           visible = true
           confirmLoading = false
+          add = true
         "
         type="primary"
         icon="plus"
@@ -459,6 +460,14 @@ a {
                   >
                     修改</a
                   >
+                  <a
+                    href="javascript:;"
+                    style="margin-left:20px"
+                    @click="personEdit(items, '2')"
+                    v-if="items.userId == userInfo().id"
+                  >
+                    人员修改</a
+                  >
                   <!-- <a
                       href="javascript:;"
                       style="margin-left:20px"
@@ -573,7 +582,9 @@ a {
           />
         </div>
         <div v-else style="width:100%;height:400px;display:flex;justify-content: center;align-items: center;">
-          <a-empty />
+          <img
+            src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1575627350102&di=02972956f2243933bffc0d85099adbfe&imgtype=jpg&src=http%3A%2F%2Fimg0.imgtn.bdimg.com%2Fit%2Fu%3D1095310825%2C1528244349%26fm%3D214%26gp%3D0.jpg"
+            alt="" />
         </div>
       </a-tab-pane>
     </a-tabs>
@@ -641,7 +652,7 @@ a {
       </div>
     </a-modal>
 
-    <a-modal title="添加素材" v-model="visible" @cancel="close" @afterClose="close" :maskClosable="false" :width="800">
+    <a-modal :title="add?'添加素材':'修改素材'" v-model="visible" @cancel="close" @afterClose="close" :maskClosable="false" :width="800">
       <template slot="footer">
         <a-button key="back" @click="close">取消</a-button>
         <a-button key="submit" type="primary" :disabled="!confirmLoading" @click="handleOk">
@@ -660,6 +671,7 @@ a {
             showSearch
             optionFilterProp="children"
             :filterOption="filterOption"
+            :disabled="!add"
           >
             <a-select-option :value="item.projectId" v-for="item of dataElse" :key="item.id">
               {{ item.projectName }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{
@@ -697,7 +709,7 @@ a {
           :wrapper-col="wrapperCol"
           label="封面上传"
           class="add-image-material"
-          v-if="getData('projectId')"
+          v-if="getData('projectId')&&add"
         >
           <upload-to-ali
             style="width:160%"
@@ -729,7 +741,7 @@ a {
             >上传成功</span
           >
         </a-form-item>
-        <div>
+        <div v-if="add">
           <a-form-item :label-col="labelCol" :wrapper-col="wrapperCol" label="策划" v-if="activeKey == 'video'">
             <a-select
               v-decorator="[
@@ -773,6 +785,7 @@ a {
             sm: { span: 18 }
           }"
           label="标签"
+          v-if="add"
         >
           <template v-for="(tag, index) in tags">
             <a-tooltip v-if="tag.length > 20" :key="tag" :title="tag">
@@ -806,6 +819,7 @@ a {
             sm: { span: 12 }
           }"
           label="描述"
+          v-if="add"
         >
           <a-textarea
             placeholder="请输入描述"
@@ -1083,6 +1097,54 @@ a {
       </div>
     </a-modal>
 
+    <a-modal title="人员修改" v-model="personVisible"  @afterClose="closePerson">
+        <template slot="footer">
+            <a-button key="back" @click="closePerson">取消</a-button>
+            <a-button key="submit" type="primary" @click="handleOkPerson">
+            确定
+            </a-button>
+        </template>
+        <a-form  :form="formPerson">
+          <a-form-item :label-col="labelCol" :wrapper-col="wrapperCol" label="策划" v-if="activeKey == 'video'">
+            <a-select
+              v-decorator="[
+                'planId', // 给表单赋值或拉取表单时,该input对应的key
+                { rules: [{ required: true, message: '请选择策划!' }] }
+              ]"
+            >
+              <a-select-option :value="item.userId" v-for="item of ascription.planId" :key="item.userId">
+                {{ item.userName }}
+              </a-select-option>
+            </a-select>
+          </a-form-item>
+          <a-form-item :label-col="labelCol" :wrapper-col="wrapperCol" label="拍摄" v-if="activeKey == 'video'">
+            <a-select
+              v-decorator="[
+                'shotId' // 给表单赋值或拉取表单时,该input对应的key
+              ]"
+            >
+              <a-select-option :value="item.userId" v-for="item of ascription.shotId" :key="item.userId">
+                {{ item.userName }}
+              </a-select-option>
+            </a-select>
+          </a-form-item>
+          <a-form-item :label-col="labelCol" :wrapper-col="wrapperCol" label="剪辑">
+            <a-select
+              v-decorator="[
+                'clipId', // 给表单赋值或拉取表单时,该input对应的key
+                { rules: [{ required: true, message: '请选择剪辑!' }] }
+              ]"
+            >
+              <a-select-option :value="item.userId" v-for="item of ascription.clipId" :key="item.userId">
+                {{ item.userName }}
+              </a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-form>
+          
+    </a-modal>
+
+
     <account-check ref="check" @synchro="implement"></account-check>
   </a-card>
 </template>
@@ -1091,7 +1153,7 @@ a {
 import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 import JEllipsis from '@/components/jeecg/JEllipsis'
 import UploadToAli from '@femessage/upload-to-ali'
-import { fileCheck, fileInsertV2, fileEdit, fileCheckImage } from '@/api/actor'
+import { fileCheck, fileInsertV2, fileEdit, fileCheckImage,fileEditAll } from '@/api/actor'
 import { getAction, postAction, postFile, deleteAction, putAction } from '@/api/manage'
 import qs from 'qs'
 import { mapGetters } from 'vuex'
@@ -1167,6 +1229,7 @@ export default {
       show: true,
       visible: false,
       visibleDetail: false,
+      personVisible:false,
       confirmLoading: false,
       activeKey: 'video',
       active: '0',
@@ -1207,6 +1270,7 @@ export default {
       },
       detail: false,
       form: this.$form.createForm(this),
+      formPerson:this.$form.createForm(this),
       tags: [],
       refuseFile: [],
       refuseReason: '',
@@ -1687,6 +1751,21 @@ export default {
     okEdit(e) {
       this.edit(null, this.active, '2')
     },
+    personEdit(item,status){
+        this.add = false
+        this.personVisible = true
+        this.getProjectId(item.projectId)
+        getAction('/ctop/materialInfo/getDetail', {
+          materialId: item.id
+        }).then(res => {
+            this.formPerson.setFieldsValue({
+              clipId: res.ascription.clipId,
+              planId: res.ascription.planId,
+              shotId: res.ascription.shotId,
+            })
+            this.id = item.id
+        })
+    },
     edit(item, status, editStatus) {
       if (status == '0' || status == '1') {
         if (editStatus == '2') {
@@ -1754,6 +1833,34 @@ export default {
         })
       }
     },
+    closePerson(){
+        this.personVisible = false
+    },
+    handleOkPerson(){
+      this.formPerson.validateFieldsAndScroll((err, values) => {
+        if (err) {
+          // 这里做逻辑处理
+        } else {
+            var params = {
+                planId: values.planId,
+                shotId: values.shotId,
+                clipId: values.clipId,
+                materialId:this.id
+            }
+            fileEditAll(params).then(res=>{
+                console.log(res)
+                if(res.success){
+                    this.$message.success('修改成功')
+                    this.closePerson()
+                    this.loadData()
+                }else{
+                    this.$message.error(res.message)
+                }
+            })
+
+        }
+      })
+    },
     handleOkImage() {
       var params = {}
       params.projectId = this.addImageData.projectId

+ 2 - 2
vue.config.js

@@ -66,11 +66,11 @@ module.exports = {
       '/jeecg-boot': {
         // target: 'http://39.97.120.42:8080', //请求本地 需要jeecg-boot后台项目  生产环境
         // target: 'http://39.106.184.70:8080', //请求本地 需要jeecg-boot后台项目
-        // target: 'http://192.168.1.44:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
+        target: 'http://192.168.1.13:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
         // target: 'http://192.168.2.109:8080', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.1.103:8080', //请求本地 需要jeecg-boot后台项目
         // target: 'http://192.168.2.115:8080', //请求本地 需要jeecg-boot后台项目  祚云
-        target: 'http://192.168.2.85:8080', //请求本地 需要jeecg-boot后台项目  孙震
+        // target: 'http://192.168.1.127:8080', //请求本地 需要jeecg-boot后台项目  孙震
         // target: 'http://192.168.43.119:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙,手机热点
         ws: false,
         changeOrigin: true